我有来自德国柏林的日期/时间信息。例如: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