如何确定 C 中是否启用夏令时?
我有一个在跨平台上运行的 C 应用程序。在此程序中,我需要编写一个函数来确定给定日期是否为 DST。
实际上,我尝试在纯 C 中查找 DST 开始-DST 结束日期。有没有任何简单且标准的方法可以做到这一点?
I have a C application running on cross platforms. In this program, I need to write a function which determines if the given date is DST or not.
Actually, i try to find DST begin-DST end dates in pure C. Is there any simple and standard way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
time.h
提供带有tm_isdst
标志的tm
结构。使用time
获取当前时间,使用localtime
获取将时间调整为当前语言环境的tm
结构体,并读取tm_isdst
标志。从联机帮助页:
time.h
providestm
structs with atm_isdst
flag. Usetime
to get the current time,localtime
to get atm
struct with the time adjusted to the current locale and read thetm_isdst
flag.From the manpage:
代码是:
The code is:
实现中不允许假设 tm_isdst 始终为 0。
它必须提供正确的数据。
如果实现无法提供与国家/地区设置的规则一致的 tm_isdst,则应将 tm_isdst 设置为负值,如 7.23.1/4 同一标准。
Implementation is not allowed to assume that tm_isdst is always 0.
It must provide correct data.
If implementation cannot provide tm_isdst which is consistent with rules set in a country than it should set tm_isdst to negative value as specified in 7.23.1/4 in the same Standard.