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 。
我真的对此感到困惑,非常感谢一些帮助。谢谢!
答案 0 :(得分:2)
正如glenebob在评论中指出的那样,原因是2014年之后没有调整规则生效,俄罗斯决定不再使用DST。
俄罗斯时区确实支持 DST,但仅限于2014年之前,所以我真正需要做的是致电TimeZoneInfo.GetAdjustmentRules以确定此时DST是否有效或不。
我正在开发的应用程序也在使用UWP API,实际上缺少这种方法,但这是一个完全不同的问题......
我在那里进行了一次疯狂的追逐......我们生活和学习......
更新:我决定不通过检查调整规则来复制Windows。太多的努力和复杂性的价值很小。不,谢谢!