TimeZoneInfo DST vs Windows settings
TimeZoneInfo.SupportsDaylightSavingTime是否反映Windows日期和时间中"自动调整夏令时"的禁用/启用状态。时间设置?
我正在尝试在用户无法访问Windows的自助服务终端模式应用程序中复制这些设置,并且我设法让一切正常运行,包括使用tzutil设置带或不带DST的时区,但在测试时我注意到一些时区DST设置(像莫斯科)与Windows不同步。
我们知道几年前俄罗斯摆脱了DST,所以当我去Windows并选择莫斯科作为我的时区时,我看到了:
启动我的测试控制台应用程序(.NET 4.6.1),然后从GetSystemTimeZones获取当前时区时,我发现它确实支持DST:
如果SupportsDaylightSavingTime为true,则不应在Windows设置中启用切换开关?
我甚至通过调用Win32函数GetDynamicTimeZoneInformation来检查DynamicDaylightTimeDisabled是真还是假(尽管我不完全确定这是否反映了Windows中的设置)。我首先尝试使用我的真实时区(赫尔辛基),结果如下:
当切换swtich打开时,DynamicDaylightTimeDisabled为false,但是当切换关闭时,它变为true。所以我认为它可能确实反映了它?
我试过俄罗斯,DynamicDaylightTimeDisabled的值是假的,所以启用了日光?
我的Windows版本是10.0.17134 Build 17134如果有帮助的话。
我真的对此感到困惑,真的很感激一些帮助。谢谢!
正如glenebob在他的评论中指出的那样,原因是因为2014年之后没有调整规则,俄罗斯决定不再使用DST。
俄罗斯时区确实支持DST,但仅在2014年之前,所以我真正需要做的是调用TimeZoneInfo.GetAdjustmentRules以确定DST在此时是否有效。
我正在开发的应用程序也使用UWP API,实际上缺少这种方法,但这是一个完全不同的问题......
那段时间我在那里疯狂地追逐......我们生活和学习......
更新:我决定不通过检查调整规则来复制Windows。 太多的努力和复杂性的价值很小。 不用了,谢谢!