使用boost将UTC时间转换为自定义时区

时间:2014-10-22 10:29:22

标签: c++ datetime boost timezone

我正在尝试将UTC时间转换为自定义时区。我已经在这里和那里阅读了很多关于它的问题,但它们似乎都反过来,或者使用时间调整器,你无法设置时区。到目前为止,我已经设法做到了:

 boost::local_time::time_zone_ptr           time_zone(new boost::local_time::posix_time_zone("EST5EDT,M3.2.0,M11.1.0"));
 boost::posix_time::ptime const             now(boost::gregorian::date(2004,11,5), boost::posix_time::hours(10));
 boost::local_time::local_date_time  const  ny(now, time_zone );
 //
 ny.utc_time().time_of_day();     // Expected: 10:00 Actual: 10:00
 ny.local_time().time_of_day();   // Expected: 04:00  Actual: 16:00

我希望ny.local_time()显示为04:00,因为当UTC时间是10:00时,它是纽约的4:00。

有人能建议正确的方法吗?

1 个答案:

答案 0 :(得分:2)

升级库似乎解释了"偏移"作为添加到UTC以获取当地时间的金额;而标准的POSIX约定则相反。将其更改为

"EST-5EDT,M3.2.0,M11.1.0"
    ^