如何获取Windows的当前Boost时区?

时间:2017-12-25 03:55:39

标签: c++ boost boost-date-time

这类似于How to get the current time zone?

#include <ctime>
tzset();
time_zone_ptr zone(new posix_time_zone(tzname[localtime(0)->tm_isdst]));

以上代码会引发“错误播放”异常。来自tzname或GetTimeZoneInformation的时区是一个字符串,如“中国标准时间”,Boost时区不接受此字符串。

有解决这个基本问题的简单方法吗?

1 个答案:

答案 0 :(得分:1)

使用Howard Hinnant's time zone library,以下内容将在Windows上打印出当前的IANA time zone名称:

#include "date/tz.h"
#include <iostream>

int
main()
{
    std::cout << date::current_zone()->name() << '\n';
}

Windows上需要一些installation。对我来说,上面的程序输出:

America/New_York

implementation使用GetDynamicTimeZoneInformation查找当前的Windows时区,然后使用this Unicode mapping从本机Windows时区名称映射到IANA time zone名称。< / p>