【问题标题】:DST restoration under Linux in CLinux下C语言恢复夏令时
【发布时间】:2011-08-29 11:57:06
【问题描述】:

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

很遗憾,这些时间没有夏令时信息。我知道第一次是 CEST,第二次是 CET。

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

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

自行开发这样的检查对我来说似乎很容易出错。有什么东西可以在 Linux 下用 C 语言使用吗?

感谢您的帮助。

【问题讨论】:

    标签: c linux datetime dst


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-02-02
        • 2015-11-10
        • 2017-08-28
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 2016-03-12
        • 2012-09-27
        • 2012-06-23
        相关资源
        最近更新 更多