2017-04-14 52 views
0

W. Aus標準時間的.Net/Windows TimeZoneInfo對象顯示它支持夏令時。在澳大利亞政府網站上關於澳大利亞政府網站關於夏令時節日的查詢顯示,西澳大利亞在2009年廢除了它,因此從2010年到現在及之後都沒有夏令時。W. Aus標準時間.Net TimeZoneInfo支持日光節省時間問題

我檢查了幾個系統上的TimeZoneInfo對象,他們都說W Aus Standard Time支持dst。他們的所有註冊管理機構都具有相同的價值。我已經檢查過Windows更新並且沒有發現TimeZoneInfo對象的更新。

任何人都可以闡明爲什麼微軟似乎忽略了更新這個對象超過7年?我錯過了什麼嗎?

+1

SiupportsDaylightSavingTime告訴您是否有時區的DST規則。是的,有必要涵蓋2010年之前的日期。它不*表示DST目前正在生效。 –

+0

感謝您的回覆@Hans。對我來說,現在如何運作更爲清晰。 – llc381

回答

3

我相信你看到的是:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time"); 
tzi.SupportsDaylightSavingTime == true 

the MSDN documentationSupportsDaylightSavingTime屬性:

獲取指示時區是否有夏令時規則的值。

所以,它不會告訴你,如果時區目前使用夏令時,或沒有,它會告訴你,如果它曾經,至少時間簡史那就是在中Windows時區數據。

如果你想知道,如果DST是當前有效,然後執行:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time"); 
tzi.IsDaylightSavingTime(DateTime.UtcNow) // false 

如果你想知道這是否是在某一年的任何時間的支持,您可以檢查調整規則數據從GetAdjustmentRules方法返回。

的Windows存儲在註冊表中的時區數據:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 
    \Time Zones\W. Australia Standard Time\Dynamic DST 

Registry

所以我們可以看到,有從2005年的數據轉發在註冊表中。如果仔細觀察,還可以看到2006年和2009年之間的一些變化。如果您有興趣,This article可幫助您解讀數據。

事實上,如果我們檢查timeanddate.com(一非常的時區信息很好的資源),我們可以看到,西澳大利亞的確有夏令時2006年至2009年:

timeanddate capture

最後,我會補充一點,Windows時區服務團隊已經非常擅長處理世界時區數據更改。您可以監視this blog以獲取更新。尤其是,他們通過the June 2016 update大大擴大了覆蓋範圍並提高了歷史準確性。

對於澳大利亞,2016年6月的更新增加了兩個新的時區;一個用於豪勳爵羣島(UTC + 10:30 STD,UTC + 11:00 DST),另一個用於在Eucla附近使用的非官方中西部時間(UTC + 08:45),但對於任何標準都不需要更正大陸時區。

+0

這是非常有意義的,你指出了正在逃避的信息。我沒有考慮到SupportsDaylightSavingsTime位將作爲邏輯控制將日期傳遞到TimeZoneInfo類中的檢查規則方法。一般來說,如何閱讀這些對象會更加清晰。謝謝!! – llc381

+0

另外,感謝您提供有關Windows更新的信息和鏈接。我去過很多這些資源。要看到有證件的人確認他們的正確性,可以減輕我們團隊的壓力,確保我們正確地服務時間。我們正在使用一些庫以及Windows對象。我們(和許多其他人)感謝您在這個領域的所有努力! – llc381

+0

很高興能幫到你!另外,你可能想看看[Noda Time](http://nodatime.org)作爲替代方法。 –