是否TimeZoneInfo.SupportsDaylightSavingTime在 Windows 日期和时间设置中反射(reflect)“自动调整夏令时”的禁用/启用状态?
我正在尝试在用户无法访问 Windows 的自助服务终端模式应用程序中复制这些设置,并且我已经设法让一切正常工作,包括使用 tzutil 设置有或没有 DST 的时区,但在测试时我注意到一些时区 DST 设置(如莫斯科)与 Windows 不同步。
我们知道俄罗斯在几年前取消了 DST,所以当我转到 Windows 并选择莫斯科作为我的时区时,我看到了这个:
当启动我的测试控制台应用程序 (.NET 4.6.1) 时,然后从 GetSystemTimeZones 获取我当前的时区,我看到它实际上支持 DST:
如果 SupportsDaylightSavingTime 为真,是否应该在 Windows 设置中启用切换开关?
我什至通过调用 Win32 函数进行测试 GetDynamicTimeZoneInformation检查 DynamicDaylightTimeDisabled 是真还是假(虽然我不完全确定这是否反射(reflect)了 Windows 中的设置)。我首先尝试使用我的真实时区(赫尔辛基),结果是:
当切换开关打开时,DynamicDaylightTimeDisabled 为false,但当切换关闭时,它变为true。所以我假设它可能确实反射(reflect)了它?
我在俄罗斯试过,DynamicDaylightTimeDisabled 的值为false,所以启用了日光?
如果有帮助,我的 Windows 版本是 10.0.17134 Build 17134。
我对此非常困惑,非常感谢您的帮助。谢谢!
最佳答案
正如 glenebob 在他的评论中指出的那样,原因是因为在 2014 年俄罗斯决定不再使用 DST 之后没有生效的调整规则。
俄罗斯时区确实支持 DST,但只是在 2014 年之前,所以我真正需要做的是调用 TimeZoneInfo.GetAdjustmentRules及时判断夏令时是否有效。
我正在开发的应用程序也使用 UWP API,它实际上缺少此方法,但这是一个完全不同的问题...
有一段时间我是在徒劳地追逐...我们生活和学习...
更新:我决定不通过检查调整规则来复制 Windows。太多的努力和复杂性没有什么值(value)。不,谢谢!
关于c# - TimeZoneInfo DST 与 Windows 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50255214/