关于c#:TimeZoneInfo DST与Windows设置

TimeZoneInfo DST vs Windows settings

TimeZoneInfo.SupportsDaylightSavingTime是否反映Windows日期和时间中"自动调整夏令时"的禁用/启用状态。时间设置?

我正在尝试在用户无法访问Windows的自助服务终端模式应用程序中复制这些设置,并且我设法让一切正常运行,包括使用tzutil设置带或不带DST的时区,但在测试时我注意到一些时区DST设置(像莫斯科)与Windows不同步。

我们知道几年前俄罗斯摆脱了DST,所以当我去Windows并选择莫斯科作为我的时区时,我看到了:

Adjust for DST automatically is off, because it's not supported?

启动我的测试控制台应用程序(.NET 4.6.1),然后从GetSystemTimeZones获取当前时区时,我发现它确实支持DST:

DST is supported

如果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。 太多的努力和复杂性的价值很小。 不用了,谢谢!