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

时间:2013-02-06 16:41:32

标签: c++ c linux redhat

我需要确定是否为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,请告诉我。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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