2013-10-08 46 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

由做出這種決定的人引發的問題應該由作出這些決定的人來處理。只要他們不知道這些決定的後果,他們就沒有理由重新考慮。當然,我們無能爲力。 –