我有来自德国柏林的date/时间信息。 例如:2011-05-16 12:24:23,2011-01-21 17:00:31
不幸的是,这些时间没有夏令时信息。 我知道第一次约会是CEST,第二次是CET。
我可以写一个检查date/时间是否夏令时。
夏季开始于上午2:00的最后一个星期天,10月的最后一个星期三凌晨3点结束。
自我发展这样的检查似乎对我来说很容易出错。 有什么可以在Linux下在C中使用?
感谢您的帮助。
你可以用mktime()
把时间转换成time_t
,然后把它传递回到设置tm_isdst
localtime()
。 mktime()
和localtime()
使用本地系统的时间配置,所以你真的发现时间戳是否在DST 中 。 这里显而易见的问题是,你有一个没有地理信息的时间戳字符串,所以你可以做的最好的假设是你的当前位置。
您可以将%Z
格式参数传递给date命令以从日期获取时区,然后根据时区的名称确定DST是否有效:
$ date -d '2011-05-16' '+%Z' CEST $ date -d '2011-01-21' '+%Z' CET