在 C 语言中的 Linux 下恢复 DST



我有来自德国柏林的日期/时间信息。例如:2011-05-16 12:24:23,2011-01-21 17:00:31

不幸的是,这些时间没有夏令时信息。我知道第一次是CEST,第二次是CET。

我可以写一个检查日期/时间是否为夏令时。

夏季从3月的最后一个星期日凌晨

2:00开始,到10月的最后一个星期日凌晨3点结束。

自我开发这样的检查对我来说似乎容易出错。有没有一些东西可以在 Linux 的 C 中使用?

谢谢你的帮助。

您可以使用

mktime()将时间转换为time_t,然后将其传递回将设置tm_isdst localtime()mktime()localtime()都利用本地系统的时间配置,因此您真正发现了时间戳是否在您所在的 DST 中。 这里明显的问题是你有一个没有地理信息的时间戳字符串,所以你能做的最好的事情就是假设它是针对你当前的位置。

您可以将 %Z format 参数传递给 date 命令以从日期获取时区,然后根据时区的名称确定 DST 是否有效:

$ date -d '2011-05-16' '+%Z'
CEST
$ date -d '2011-01-21' '+%Z'
CET

相关内容

  • 没有找到相关文章

最新更新