來自時區數據生成器的數據是而不是使用「Aus EST」作爲時區縮寫。我相信你是困惑,因爲你看到的是這樣的:
moment.tz.add({
"zones": {
"Australia/Brisbane": [
"10:12:8 - LMT 1895 10:12:8",
"10 Aus EST 1971 10",
"10 AQ EST"
]
},
"rules": {
"Aus": [
"1917 1917 0 1 7 0:1 0 1",
"1917 1917 2 25 7 2 0 0",
"1942 1942 0 1 7 2 0 1",
"1942 1942 2 29 7 2 0 0",
"1942 1942 8 27 7 2 0 1",
"1943 1944 2 0 8 2 0 0",
"1943 1943 9 3 7 2 0 1"
],
"AQ": [
"1971 1971 9 0 8 2 2 1",
"1972 1972 1 0 8 2 2 0",
"1989 1991 9 0 8 2 2 1",
"1990 1992 2 1 0 2 2 0"
]
},
"links": {}
});
這裏的"Aus"
是指內部規則標有「澳元」,並用縮寫僅僅是EST。您還可以看到該區域有第二條規則,標記爲"AQ"
。這些規則名稱只是標籤,以便區域數據可以引用它們。您不應該注意規則名稱,只是區域名稱本身,例如此處顯示的"Australia/Brisbane"
。
該數據直接來自IANA/Olson time zone database。 Moment.js簡單地將其編譯爲更緊湊的JSON格式。你可以找到澳大利亞here的原始規則。
如果你願意,你可以閱讀同一個文件中的評論,該文件中有關是否使用AEST或EST作爲縮寫的詳細討論。但點可以歸結爲:
- 在澳大利亞,很多隻是說只是「東部時間」,而不是「澳大利亞東部時間」
- 在這裏,在美國,我們不會到處說「美國東部時間「,那爲什麼他們呢?
- 即使我們這樣做,那麼都會是AEST,所以這不會幫助。
這其實只是沒有標準的時區縮寫的一個例子。還有其他衝突,如至少有5種不同含義的「CST」,至少有3種其他衝突的「IST」等等。單個地區甚至有衝突,例如夏威夷,經常被標註爲「HST」,但在法律上是「HAST」(夏威夷 - 阿留申標準時間)。如果你想要更多的例子,你可以通過this list of abbreviations。
因此,一般來說,除了用於顯示以外,不能依賴任何時區縮寫。您不應該在JSON數據中傳遞"AEST"
。相反,通過"Australia/Brisbane"
,或任何實際的IANA /奧爾森時區標識符。您可以找到有效區域標識符here的完整列表。您還可以查看澳大利亞here的具體信息。
如果您的數據來自第三方,您應該要求他們相應地更改其API,因此它實際上可用。
「AEST」不是一個好標識符的另一個原因是像Australia/Brisbane
這樣的區域常年使用它,而像Australia/Sydney
這樣的區域在冬季使用AEST,在夏季使用AEDT。所以只要有AEST是不足以唯一識別時區的。
AFAIK「AEST」通常在澳大利亞境內使用,指的是澳大利亞東部標準時間 - 我在那裏觀看了媒體展示,報紙和在線促銷活動。不知道Moment.js選擇「Aus EST」作爲名字背後的動機。 –