Dot-Net

如何將 TimeZoneInfo 對象儲存在數據庫中?

  • December 16, 2015

有點誤導的標題,我知道。從來沒有真正想自己儲存TimeZoneInfo對象:相反,我想儲存一些文化中立的標識符,然後可以在以後用於重建TimeZoneInfo.

目前,我正在儲存TimeZoneInfo.Id屬性的值,在英語和俄語版本的 Windows 上似乎都可以,但我只是想確保我做正確的事情。

是的,Id是一個非本地化的標識符,所以這是一個適合儲存的東西。

不過,您應該意識到一個可能的問題:標識符會隨著時間而改變。我不知道這是否是Windows時區標識符的問題,但它肯定發生在 Olson (zoneinfo) 數據庫中。例如,我最近正在研究一個由“Pacific/Ponape”更改為“Pacific/Pohnpei”引起的問題。

我懷疑隨著微軟對 ID 的控制更加嚴格,它們更有可能保持不變 - 但即便如此,國家也可以更改名稱,分成不同的國家(可能會創建新的時區)等。

我不建議對這個問題進行任何修復——只是強調它是一個潛在的問題。儲存 ID 可能是最好的方法,但要注意潛在的風險……

引用自:https://stackoverflow.com/questions/3446906