【发布时间】:2018-10-19 16:19:59
【问题描述】:
TimeZoneInfo.SupportsDaylightSavingTime 是否反映了 Windows 日期和时间设置中“自动调整夏令时”的禁用/启用状态?
我正在尝试在用户无法访问 Windows 的信息亭模式应用程序中复制这些设置,并且我已经设法让一切正常工作,包括使用 tzutil 设置带或不带 DST 的时区,但在测试时我注意到一些时区 DST 设置(如莫斯科)与 Windows 不同步。
我们知道俄罗斯几年前取消了 DST,所以当我转到 Windows 并选择莫斯科作为我的时区时,我看到了:
在启动我的测试控制台应用程序 (.NET 4.6.1) 时,然后从 GetSystemTimeZones 获取我当前的时区,我发现它确实支持 DST:
如果 SupportsDaylightSavingTime 为 true,是否应该在 Windows 设置中启用切换开关?
我什至通过调用 Win32 函数 GetDynamicTimeZoneInformation 来检查 DynamicDaylightTimeDisabled 是真还是假(尽管我不完全确定这是否反映了 Windows 中的设置)。我首先尝试了我的真实时区(赫尔辛基),结果是:
当切换开关打开时,DynamicDaylightTimeDisabled为false,但当切换开关关闭时,它变为true。所以我假设它可能确实反映了它?
我在俄罗斯试过,DynamicDaylightTimeDisabled 的值为 false,所以启用了日光?
如果有帮助的话,我的 Windows 版本是 10.0.17134 Build 17134。
我对此感到非常困惑,非常感谢一些帮助。谢谢!
【问题讨论】:
-
这是一个很好的问题。希望你能找到答案。
-
看看
.m_adjustmentRules。可以看到,2014年后没有调整规则生效。 -
感谢 glenebob,您的评论让我找到了正确的答案。我应该阅读更多关于这些调整规则的内容!