【问题标题】:How to check whether day light savings enabled for the given UTC offset?如何检查是否为给定的 UTC 偏移启用了夏令时?
【发布时间】:2013-01-21 22:58:03
【问题描述】:

我需要确定是否为 Linux(Redhat) 中的给定 UTC 偏移启用夏令时。 我收到诸如 UTC+05:30 之类的输入。 我检查了 zdump 命令的用法。当与时区名称一起使用时,我们可以检查输出中 isdst 的值来确定夏令时的状态。

zdump -v /usr/share/zoneinfo/Asia/Kolkata | grep 2013

如上所述,zdump 需要区域名称。它不接受 UTC 偏移量。

我也尝试了以下本地时间功能。

time_t currtime;
struct tm * timeinfo;
timeinfo = localtime ( &currtime );
time_t local = mktime( timeinfo );
cout<<timeinfo->tm_isdst<<endl;

上述代码在日期时间设置中设置时区名称时有效。如果系统使用 UTC 时间,它就不起作用。当使用 UTC 时间时,我使用 gmtime 而不是本地时间。

如果有任何方法可以使用 UTC 偏移量来确定是否启用了 dst,请告诉我。

【问题讨论】:

    标签: c++ c linux redhat


    【解决方案1】:

    这通常是不可能的。许多国家/地区可能使用 UTC+05:30,每个国家/地区都有不同的夏令时政策。

    【讨论】:

      【解决方案2】:

      UTC 偏移量不足以确定是否启用 DST,因为某些司法管辖区不使用 DST。此外,那些确实有不同的生效时间表(例如,南半球的地方与北半球的地方)。您需要的是一个最新表,其中包含使用 DST 的时区名称以及每个时区的 DST 开始和停止时间。

      【讨论】:

        猜你喜欢
        • 2012-06-26
        • 2014-10-06
        • 1970-01-01
        • 2012-08-06
        • 2017-01-29
        • 2011-07-26
        • 1970-01-01
        • 2018-08-29
        相关资源
        最近更新 更多