这类似于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时区不接受此字符串。
有解决这个基本问题的简单方法吗?
答案 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>