如何在国外找到考虑到夏令时的时间
c++ How to find the time in foreign country taking into account daylight saving?
比如说,如果纽约时间是13:00,那么新西兰时间就是06:00。如果新西兰进入夏令时,那么当纽约时间是13:00时(仍然是东部时间),新西兰时间就是07:00时(现在是NZDT)。
我读了boost时间库,但在我看来,一个人必须自己确定夏令时规则,才能从'localtime'的角度找出国外的时间。
。
nyc_string = "EST-05:00:00EDT+01:00:00,M4.1.0/02:00:00,M10.5.0/02:00:00";
// above basically defines the daylight saving rule
time_zone_ptr nyc_2(new posix_time_zone(nyc_string));
std::cout << "The second zone is in daylight savings from:n "
<< nyc_2->dst_local_start_time(2004) << " through "
<< nyc_2->dst_local_end_time(2004) << std::endl;
来源:http://www.boost.org/doc/libs/1_39_0/doc/html/date_time/examples.html
也许有什么我还没有意识到的?boost是否使用任何跟踪夏令时规则的数据库?我想知道是否有一个很好的方法来调整本地时间到不同的时区在c++中,考虑到夏令时规则…如果我能有一个例子,那就太好了!
DateTime的时区数据库名为date_time_zonespec.csv
,位于libs/date_time/data
中。文档中的Flight Time示例展示了如何访问和使用它。该数据库不包含时区更改的历史记录。似乎也没有一个地方托管这个数据库的更新(除了Boost库本身)。
如果您需要准确的、最新的时区数据,那么请查看IBM流行的ICU国际化库的ICU time zone Classes。如更新时区数据一节所述:
ICU中的时区数据是从行业标准TZ生成的数据库使用tzcode(http://source.icu-project.org/repos/icu/icu/trunk/source/tools/tzcode/)工具。包含最近时区数据的ICU数据文件可从更新URL;http://source.icu-project.org/repos/icu/data/trunk/tzdata/icunew。
ICU时区数据库来源于目前由ICANN维护的tz数据库。
要在c++程序中通过http下载文件,可以使用libcurl或cURLpp c++包装器。在你的操作系统上设置一个调度程序来定期下载最新的数据库可能会更容易。
正如在注释中已经提到的,一致地使用UTC 进行存储和业务逻辑。仅用于显示/输入目的的本地时间转换。
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- boost::p osix_time:使用夏令时检索时间
- Windows UTC时间夏令时是否独立
- c++本地时间,不受夏令时使用boost的影响
- 如何在国外找到考虑到夏令时的时间
- 夏令时和其他时区相关的问题与boost日期时间库
- 如何确定当前的当地时间是否为夏令时
- 到GMTUTC(夏令时)的历史时间
- 使用WinAPI将夏令时和UTC转换为本地时间
- 是否有简单的方法在C/ c++中获得Linux下的夏令时转换时间?