【问题标题】:TimeZone Database for c++ under Windows and LinuxWindows 和 Linux 下 c++ 时区数据库
【发布时间】:2013-03-16 22:06:07
【问题描述】:

有人知道我可以在 Windows(使用 MinGW)和 Linux 下与 C++ 一起使用的 TimeZone 数据库吗?

将时间转换为不同的时区是不够的,我需要时区的历史数据(包括 UTC 偏移量和夏令时。

我找到了一些,例如ftp://ftp.iana.org/tz/tz-link.html,但我没有找到 c++ 的解析器

【问题讨论】:

  • 您肯定想要 IANA/Olson 时区数据库。不要使用 Windows 附带的那些。您提供的链接和 CharlesB 的链接答案都指向 ICU 的 C++ 实现。

标签: boost timezone


【解决方案1】:

谢谢! 我尝试了以下示例:

    time_t time1 = makeTime(1975, 7, 2,10, 11, 41);
time_zone_ptr utc_tz(new posix_time_zone("UTC-00:00:00"));
local_date_time timeutc(toPtime(time1), utc_tz);

time_zone_ptr cet_tz = tz->tz_db.time_zone_from_region("Europe/Berlin");
local_date_time timecet(toPtime(time1), cet_tz);

cout<<timeutc<<endl; // Output: 1975-Jul-02 10:11:41 UTC
cout<<timecet<<endl; // Output: 1975-Jul-02 12:11:41 CEST

根据维基百科,从 1950 年到 1979 年,德国没有夏令时。 但正如您在输出中看到的,结果在 CEST 中

我是否需要做任何特殊操作才能将历史时区数据与 boost 一起使用?

谢谢 弗洛里安

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多