奇怪的是,TimeZone.CurrentTimeZone.StandardName
按照計算機顯示語言返回本地化名稱。我需要一個編程標識符,我可以在以下代碼中提供給TimeZoneInfo
。當OS顯示語言非英文時獲取本地時區標識符
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZone);
FindSystemTimeZoneById
需要一個獨特的非本地化的程序標識符
我改變了我的電腦顯示語言爲中國和我得到一個本地化的unicode字符串,當我做TimeZone.CurrentTimeZone.StandardName
。然而,這個值是正確的,但是它被本地化爲計算機顯示語言,這是我不想要的。
我現在沒有選擇使用TimeZoneInfo.Local.Id
,因爲我的項目在.Net 2.0中。還有什麼其他選項可以獲得未本地化的時區標識符?
謝謝馬特。這是我正在尋找的答案!現在我唯一擔心的是註冊表路徑對Windows的所有風格都保持相同嗎? – murtazat
查看我的更新答案。 –
當我嘗試使用它時,我收到了非常奇怪的結果。該註冊表項在RegEdit中看起來是正確的,但是當我用key.GetValue(「TimeZoneKeyName」)讀取它時,我得到的是一個包含127個字符的裝箱字符串。第一個字符是時區的名稱,後面跟着幾個十六進制00字符(「\ 0 \ 0」),後面是看起來像隨機垃圾的東西。當然,我可以通過IndexOf('\ 0')自己提取名稱,但爲什麼key.GetValue()會返回垃圾字符以及正確的數據? – RenniePet