如何检查给定UTC偏移量是否启用了日光节约



我需要确定是否为Linux(Redhat)中给定的UTC偏移量启用了日光节约。我得到的输入如UTC+05:30。我检查了zdump命令的使用情况。当与时区名称一起使用时,我们可以检查输出中isdst的值,以确定夏令时的状态。

zdump-v/usr/share/zoneinfo/亚洲/加尔各答|grep 2013

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

我还尝试了如下的localtime函数。

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

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

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

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

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

最新更新