boost ptime总是UTC吗?

时间:2012-03-22 10:58:45

标签: c++ boost

boost ptime实例是否始终为UTC?我看不到任何时区信息。

2 个答案:

答案 0 :(得分:4)

ptime没有关联的时区信息。它不知道内容是UTC还是本地时间。事实上,你可以做一些愚蠢的事情:

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/c_local_time_adjustor.hpp>
#include <iostream>

int main()
{
    using namespace boost::posix_time;

    ptime pt1 = microsec_clock::local_time();
    std::cout << "Local: " << pt1 << std::endl;
    std::cout << "UTC:   " << microsec_clock::universal_time() << std::endl;

    // !!!
    ptime pt2 = boost::date_time::c_local_adjustor<ptime>::utc_to_local(pt1);   
    std::cout << "Oops:  " << pt2 << std::endl;
}

它会很乐意为你创造一个毫无意义的时间。

答案 1 :(得分:1)

他们是你想要的任何时区。只要您的计算一致,那么值代表的时区应该无关紧要。