俄罗斯停止使用夏令时后,TimeZone不正确

时间:2013-10-08 10:21:43

标签: .net timezone

问题在于框架3.5说俄罗斯支持DayLightSavings(返回true),而今天情况并非如此。当然,它会导致错误的偏移回到方法的提问者。

    var localTime = TimeZone.CurrentTimeZone;
    bool useDaylightSavingTime = localTime.IsDaylightSavingTime(DateTime.Now);

你如何帮助解决现在的俄罗斯时区?他们自2012年以来没有DST。这是应用和使用直到2019年年底。

[相关链接@ Connect]
http://connect.microsoft.com/VisualStudio/feedback/details/686169/incorrent-utc-to-local-time-conversion-after-kb-2570791

[相关链接WorldClock]
http://www.timeanddate.com/worldclock/timezone.html?n=166

1 个答案:

答案 0 :(得分:3)

这一切似乎都在我的机器上检查:

using System;

class Program {
    static void Main(string[] args) {
        var tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
        var now = tz.IsDaylightSavingTime(new DateTime(2013, 10, 8));
        Console.WriteLine("Today: {0}", now);
        var prev = tz.IsDaylightSavingTime(new DateTime(2011, 10, 8));
        Console.WriteLine("Two years ago: {0}", prev);
        Console.ReadLine();
    }
}

输出:

  

今天:假   两年前:真的

.NET从注册表中检索时区规则。 Microsoft通过Windows Update定期更新本地时区规则的更改。确保您的注册表是最新的,如果您不允许Windows Update部署这些更新,则可能不会。您可以通过运行Regedit.exe来查看,导航到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones \ Russian Standard Time键。 “Dynamic DST”子项保留非标准规则。我的机器有2010年,2011年和2012年的参赛作品。