2009-08-03 207 views
7

我期待實現與簽名類似如下的功能:的TimeZoneInfo和國家代碼

bool IsTimeZoneValid(string countryCode, DateTime localTime); 

的目的是確定該國是否具有在本地時間將是有效的時間區,因爲我們知道當前的UTC時間。比方說,爲了爭辯,「有效」意味着當轉換爲UTC時,時間與我們認爲時間相差30分鐘。

例如,現在說它現在是03/08/2009 18:25:00 UTC,然後給予以下方法調用澳大利亞,它應該返回true,因爲這是在「東部標準時間」區域中的有效時間:

IsTimeZoneValid("AU", DateTime.Parse("04/08/2009 03:25:00")); 

但是,法國的以下呼籲應該失敗,因爲這不是法國時區的有效時間。

IsTimeZoneValid("FR", DateTime.Parse("04/08/2009 03:25:00")); 

這需要準確,並考慮到夏令時等

.NET 3.5包括新TimeZoneInfo類能爲我做了很多的轉換,如果我知道是什麼時區存在於一個特定的國家,但我似乎無法找到任何內置的查找。我錯過了什麼,或者我將不得不手動創建一個國家到時區映射表?

重申,我的問題是:給定一個國家代碼,我怎樣才能得到一個時區列表。另外,還有另一種方法來處理我錯過的?

+0

+1我也真的希望能夠得到有效的時區某一國家。 – 2009-10-02 13:59:17

回答

5

默認情況下,Windows僅爲您本地時區添加時區信息,這可能是問題的原因。

該課程僅適用於本地時區和任何預定義的時區。如果您希望將其用於其他時區,則必須將註冊表設置添加到機器中以獲取所需的所有時區或使用CreateCustomTimeZone創建自定義時區信息。

http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx?ppud=4 http://msdn.microsoft.com/en-us/library/bb384268.aspx

+0

默認ID列表: http://msdn.microsoft.com/en-us/library/bb397767.aspx – eschneider 2009-08-03 18:31:31