问题在于框架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
答案 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年的参赛作品。