GetTimeZoneInformation函数返回带有"不正确"值

时间:2016-11-23 18:43:27

标签: c++ winapi struct

我在某台计算机上调用函数GetTimeZoneInformation时遇到问题。

具体来说,我的机器设置为 EST / EDT (禁用DST的自动调整)并且在调用函数后我的TIME_ZONE_INFORMATION结构已经相同的 StandardName & DaylightName (东部标准时间) StandardBias DaylightBias 均为零(0)且返回值是零(0)。

在另一台机器上(具有相同的EST / EDT区域并禁用自动调整)TIME_ZONE_INFORMATION结构显示标准名 东部标准时间,但 DaylightName 设置为东部夏令时 DaylightBias 等于-60,返回值是0。

这两台机器都是Windows 7 64位操作系统。

我已检查注册表中存储auto dst adjust设置的位置,并且两台计算机具有相同的值。

这可能是组策略设置的副作用吗?

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

对于遇到此问题的任何人,我都发现了一个问题。 打开日期和时间对话框。按更改时区... 按钮。

选择不遵守夏令时的时区。例如夏威夷。按<确定>时区设置对话框,然后按<确定>日期和时间对话框。

再次打开日期和时间对话框,再次打开“时区设置”对话框并选择原始时区(此时您会注意到所有区域都会选中自动调整复选框)观察DST)。

您可以取消选中自动调整夏令时的时钟复选框。

按<确定>时区设置。按确定日期和时间

执行这些步骤后,对GetTimeZoneInformation的调用将使用字符串(在我的情况下为“Eastern Standard Time”)和DaylightBias值0来为TIME_ZONE_INFORMATION struct DaylightName成员分配。

干杯。