是否有简单的方法在C/ c++中获得Linux下的夏令时转换时间?
Is there any simple way to get daylight saving time transition time under Linux in C/C++
我想获得夏令时的过渡时间在Linux下提供时区或TZ环境。我的方法很愚蠢,给出一年的开始,每小时尝试一次,然后检查当地时间的tm_isdst值以获得过渡时间。有什么简单的方法吗?
在glibc中有源代码,你可以在这里浏览:http://sourceware.org/git/?p=glibc.git; =树;f =时区
或者你可以在这里使用时区数据库:ftp://ftp.iana.org/tz/releases/tzdata2012c.tar.gz
由于您没有给出具体的时区/位置,我无法查找并为您提供准确的信息。
也可以使用boost_datetime。
#include <iostream>
#include <boost/date_time/local_time/local_time.hpp>
using namespace boost::local_time;
using namespace boost::posix_time;
int main()
{
tz_database tz_db;
tz_db.load_from_file("/path_to_boost/boost/libs/date_time/data/date_time_zonespec.csv");
time_zone_ptr zone = tz_db.time_zone_from_region("America/New_York");
ptime t1 = zone->dst_local_start_time(2013);
ptime t2 = zone->dst_local_end_time(2013);
std::cout << t1 << std::endl;
std::cout << t2 << std::endl;
}
相关SO链接:如何在国外找到考虑到夏令时的时间?如何获得特定日期位置的时区(偏移量)?
但正如RedX之前所说,政治可能会改变时区。因此,实际上您的原始解决方案具有与底层操作系统自动更新的优势。此外,您还可以通过使用二进制搜索来改进现有的解决方案。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- 函数在Windows或Linux上运行时表现不同
- 在Linux下捕获SIGKILL的C++程序
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- 是否有简单的方法在C/ c++中获得Linux下的夏令时转换时间?