我正在尝试复制Windows日期(&m);UWP应用程序中的时间设置,我在处理夏令时(DST)设置时遇到了麻烦。
我设法让一切正常工作,我可以通过我的应用程序更改系统时间和时区,但是
自动调整夏令时
让我困惑。
起初,我认为这足够检查一下
TimeZoneInfo.SupportsDaylightSavingTime
,然后我发现我可能还需要通过执行以下操作来检查当前选择的日期/时间是否在DST范围内
TimeZoneInfo.IsDaylightSavingTime
.
嗯,我认为我是对的,但经过测试,我自己的“调整DST”选项与Windows设置不同,而且由于我看不到Windows源代码,我不知道他们正在检查哪些其他条件来禁用/启用它。
我的UWP应用程序:
Windows设置:
我还缺什么吗?我的另一个问题是
here
对于那些感兴趣的人。
也许一些掌握内幕信息的微软开发人员可以告诉我这个切换开关背后的逻辑:-)
提前谢谢!
更新时间:
结果来自
tzutil
显示日期为2011年5月16日且时区为莫斯科(UTC+3)时,使用命令关闭DST
tzutil /s "Russian Standard Time_dstoff"
只返回“俄罗斯标准时间”,不带\u dstoff,因为DST不适用,这与Windows报告一致。
但是,为什么呢。NET的TimeZoneInfo类这么说?
还尝试了:
var currentDateTime = new DateTime(2011, 5, 16, 0, 0, 0, DateTimeKind.Local);
var isDst = TimeZoneInfo.Local.IsDaylightSavingTime(currentDateTime);
所以NET表示当前日期在DST范围内,但无法使用TZUTIL或从Windows设置关闭DST?
也许我错过了一些很明显的东西,但我看不到。。。
更新时间:
将月份更改为2月,根据调整规则在Windows中打开调整DST切换?但是,在赫尔辛基,我们也有这些转换,并且切换没有被禁用?有什么不同?
更新时间:
决定不做这些,只是检查一下
TimeZoneInfo。SupportsDaylightSavingTime支持
.不值得任何人花时间或精力像Windows那样做。