2013-10-08 104 views
0

问题出现在框架3.5中说俄罗斯支持DayLightSavings(返回true),而现在情况并非如此。当然,这会导致错误的偏移回到方法的提问者。俄罗斯停止使用夏令时后不正确的TimeZone

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

你如何解决现今俄罗斯的时区?他们没有DST自2012年这被应用,直到,主要使用,今年年底到2019年

[相关链接@连接]
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

回答

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键。 “动态DST”子项保留了非标准规则。我的机器拥有2010年,2011年和2012年的参赛作品。

+0

感谢Hans。我会跟进,因为我的电脑无所谓,这个问题会影响部署数据包的win服务器。另外,由于这个原因,这可能是一个不容置疑的问题,因为这家公司的开发机器在Windows XP上。如果他们然后拒绝服务器上的自动更新,则在w2k3 + – Independent

+0

上部署服务器。这是一个反复出现的问题,这样的设置和代码使用.net来实现tz数据?因为tz正在改变。 – Independent

+0

由做出这种决定的人引发的问题应该由作出这些决定的人来处理。只要他们不知道这些决定的后果,他们就没有理由重新考虑。当然,我们无能为力。 –