在 C++ 中,我正在编写一个函数,将时间 (NULL)(即自 1970 年 1 月 1 日以来 UTC 时间的所有秒数)转换为军用时间格式(小时:分钟:秒)的本地时间 EST。老实说,我不知道如何从数学上做到这一点,以便程序随着时间的推移保持准确。
我也很清楚有一个本地时间函数,但我想从头开始构建这个函数。有没有人有任何建议或提示?
最佳答案
Also I'm well aware that there is a local time function but I'd like to build this function from the ground up. Does anyone have any advice or tips?
既然有大量免费且经过良好测试的软件包,您为什么要这样做?正如评论中提到的,让夏令时正确是非常重要的。基于 IANA tzinfo 数据库,现有的软件包正是这样做的,而且他们做得很好。
C 选项:
std::localtime()
.这个函数使用了一个全局变量;它不是线程安全的。localtime_r()
.这是一个 POSIX 函数,不是 C++ 库的一部分。它在 Windows 上不存在。localtime_s()
.这是一个可选的 C11 函数。即使它存在于您的机器上,它也可能不是<ctime>
的一部分。 .
C++ 选项:
Howard Hinant 的日期时间模块,https://github.com/HowardHinnant/date .
关于将时间(NULL)转换为本地时间的 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044502/