From MSDN:
FindSystemTimeZoneById
嘗試匹配ID註冊表的分支HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones
下Windows XP和Windows Vista中的子項的名稱。該分支不一定包含全面的時區標識符列表。
根據你鏈接到的表,你想傳遞字符串Europe_Central
,因爲它是奧爾森「歐洲/哥本哈根」的Windows版本。 (請注意,根據MSDN文檔,它不區分大小寫。)如果不起作用,您應該檢查您的註冊表以確保存在Europe_Central
條目。
有關Olson tz數據庫及其如何定義時區的更多信息,請參閱wikipedia。
更新1:
我的註冊表(Vista)的有它列爲Central Europe Standard Time
,這是我需要在以作爲參數傳遞的字符串,你有一個類似的項目嗎?
如果該條目不在您的註冊表中,您可以使用here的信息create it yourself,儘管看起來您需要爲夏令時制定規則(請參閱鏈接)。
您也可以嘗試使用DateTimeOffset
,並使用DateTime
來保存本地服務器時間並傳遞一個TimeSpan
的+1小時(CET)。
根據您要做的事情,您也可以從CET時間減去一小時以獲得UTC。 (雖然一旦Central Europe Summer Time生效,這將不起作用;那麼你需要減去兩個小時。)
非常感謝您的回覆。我使用路徑'HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones'檢查了註冊表,發現即使在時區註冊表更新之後,'Europe_Central'的時區註冊表也不存在(從http://下載support.microsoft.com/kb/979306)。我可否知道如何在時區註冊表中添加那些不在那裏的人?如果手動添加註冊表,它似乎太多了。謝謝。 – darrell 2011-01-28 10:12:10