2012-11-01 162 views
3

查找時區我有一個像 Sat, 27 Oct 2012 23:47:57 -0700一個字符串,我想要得到的-0700相應的時區像,UTC等。從日期時間

+0

給定偏移量可能有多個時區標識符。 – air4x

回答

5

從根本上說,你不能。您目前剛從UTC獲得偏移量 ...並且可以映射到多個時區。當然,你可以創建一個固定偏移的時區 - 但這與「這個日期/時間值生成時用戶最初所處的時區」不同,這是我懷疑你想要的。

您可以通過每隔時區查看步驟,看看每個時區是否有效 - 但由於某些時間不明確,您需要小心。例如,在英國的星期天,「Sun,2012年10月28日01:30:00 +0100」和「Sun,2012年10月28日01:30:00 +0000」將是有效的。您可能想要計算絕對UTC時間,並檢查候選時區中該時刻的偏移量。如果該偏移量與您開始使用的偏移量相同,則該時區爲,其中一個爲

如果您發現多個適合的時區,我不知道 - 我們沒有足夠的上下文來提供建議。

+0

有多少時間會有多個TimeZone匹配給定的UTC +偏移量? –

+0

@JohnGietzen:很多時候的確如此。如果您對*歷史*更改不感興趣,則更少(如果您只關心UTC偏移量,則在特定時刻給定UTC偏移量) - 但它仍然會發生,並且超出您的預期。舉一個例子,考慮一下倫敦和卡薩布蘭卡 - 大部分時間他們有相同的抵消,但是在夏季的一個月裏,卡薩布蘭卡回到標準時間。 (可能是齋月 - 還不確定。) –