【问题标题】:Get time zone offset from time zone name in C++从 C++ 中的时区名称获取时区偏移量
【发布时间】:2015-10-23 07:49:00
【问题描述】:

我需要从一个时区名称字符串中获取时区偏移量,该字符串与“Pacific/Auckland”完全一样。我知道 boost::date_time 可以完成这项工作,但没有它我需要这样做。也不允许使用 TZ 变量进行操作。有人知道如何以这种方式完成这项任务吗?

【问题讨论】:

  • 您在 Windows 中工作吗?
  • 您需要查找、构建、购买、借用或窃取时区名称数据库。首先尝试查找选项。也许你的 linux 机器上有一个。
  • @Rahul Tripathi:是的,目前在 Windows 中做事
  • @n.m 谢谢 :))) 我会试试的。实际上存在公共时区数据库,例如这里iana.org/time-zones
  • @ivan.ukr:- 你检查了吗:How to get the current time zone?

标签: c++ c time


【解决方案1】:

看看Howard Hinnant's parser for the Time Zone Database。他还提供了一个非常好的日期/时间库。

【讨论】:

  • 谢谢,我去看看。这可能正是我想要的。
  • 是的,这绝对是我需要的。
【解决方案2】:

我知道这是一个老问题,但我只需要编写已知时区的代码列表,所以我在这里分享。

#include <date/tz.h>

const date::tzdb & tzdb = date::get_tzdb();
for (const date::time_zone & tz: tzdb.zones) {
    cout << "TZ: " << tz.name() << endl;
}

这使用Howard Hinnants Date Library,您需要在 tz.cpp 文件中进行编译并拥有包含的路径。

对于 C++20,库是标准的一部分,但我仍然使用 C++17。

【讨论】:

  • 谢谢。我也注意到了这个库。
猜你喜欢
  • 2021-04-11
  • 2016-05-07
  • 2014-02-15
  • 2020-04-20
  • 2016-08-06
  • 2011-02-28
  • 2011-07-29
  • 1970-01-01
  • 2020-01-02
相关资源
最近更新 更多