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

Convert UTC time to custom time zone with boost

本文关键字:自定义 时区 转换 时间 boost UTC 使用      更新时间:2023-10-16

我正在尝试将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。

有人能提出正确的方法吗?

boost库似乎将"偏移量"解释为要添加到UTC以获得本地时间的量;而标准POSIX约定则相反。将其更改为

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