【问题标题】:Incorrect TimeZone after Russia stop using Daylight Saving Time俄罗斯停止使用夏令时后时区不正确
【发布时间】:2013-10-08 10:21:43
【问题描述】:

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

【问题讨论】:

    标签: .net timezone


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢汉斯。我会跟进,因为我的电脑无关紧要,这个问题会影响部署数据包的 win-servers。此外,正因为如此,这可能不是问题,因为这家公司的开发机器是在 Windows XP 上的。在 w2k3+ 上部署的服务器
    • 如果他们拒绝服务器上的自动更新。对于此类设置,这是一个反复出现的问题吗?代码在哪里使用 .net 来实现 tz 数据?因为 tz 正在改变..
    • 由做出此类决定的人引发的问题应该由做出这些决定的人处理。只要他们不知道这些决定的后果,他们就没有任何理由重新考虑。当然,我们对此无能为力。
    • +1。如果您不保持最新状态,计算机将无法知道已更改的内容,例如此时区更改。如果不允许自动更新,您至少需要手动应用最新的时区更新。 Here is the most current update from August 2013here is the TZ/DST support site,您可以关注它们以了解未来的更新。
    • 派对。 .NET 实现不必是用于 tz 的那个。是的,我认为有一些事情要做。如果这样的决定是基于缺乏知识,或者符合系统的早期要求;沟通和知识转移是一个很好的尝试。明天我会调查原因。有趣的是看看是 Citrix 自己的服务器还是公司的后端服务器在 TimeZone.CurrentTimeZone 上响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多