0

问题出现在 Framework 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

4

1 回答 1

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 年的条目。

于 2013-10-08T12:10:28.773 回答