2013-01-02 1095 views
28

在PHP文件,list of supported time zonesUTC列出了兩次:UTC和Etc/UTC時區有區別嗎?

  • UTC
  • Etc/UTC

是否有這兩個之間的任何概念上的差異,或者他們只是同義詞?

+1

來自頁面:「請不要使用此處列出的任何時區(UTC以外),它們僅出於向後兼容的原因。」 - 我想知道是否覆蓋了'Etc/UTC'? – 2013-01-02 20:28:00

+0

可能:繼[chrisbulmer的回答](http://stackoverflow.com/a/14128617/759866),我會懷疑它是非標準的! – Benjamin

回答

21

Etc/UTC是爲顯示名稱爲UTC的時區指定的。也就是說,他們是同一時區的長名和短名,每IANA's time zone database

+0

這並不是我理解本文的方式:「例如,TZ ='Etc/GMT + 4'使用 縮寫」GMT + 4「,對應於UTC (即格林威治西部)4小時,即使很多人會預計它會在UTC時間前4小時(即格林威治東部)爲 。「所以它會採用相反的方式,除非UTC也這樣做,否則它們確實是相反的! – Benjamin

+0

@Benjamin:我們正在談論UTC時區的偏移量爲零。正零和負零是相同的數字,無論如何都沒有偏移。 –

+0

我明白,但我的問題同樣適用於'Etc/GMT + 1'等。我很驚訝,只有'Etc'版本被提出,我認爲一般的共識是使用GMT + 1,而不是「反向」版本! – Benjamin

0

ETC/GMT + 4與GMT-4相同。

public static void main(String[] args) { 
    TimeZone tz = TimeZone.getTimeZone("Etc/GMT-7"); 
    System.out.println(tz); 

    tz = TimeZone.getTimeZone("GMT+7"); 
    System.out.println(tz); 

} 

您可以自己測試一下。

但我不知道是什麼意思ETC ..

17

首先,要回答這個問題:
UTCEtc/UTC時區之間沒有什麼區別。

Etc/UTC處於奧爾森-時區數據庫(tz database),也被稱爲IANA-timezones-database,其中所有時區符合統一命名約定一個時區:Area/Location

由於某些時區不能歸屬於世界的任何區域(即大陸或海洋),因此引入了特殊區域EtcEtcetera)。這主要適用於行政時區,如UTC
因此,爲了符合命名約定,通用協調時間(區域)在tz數據庫中被命名爲Etc/UTC

對於UTC以外的管理時區(例如GMT+4,GMT-8),tz數據庫在區域名稱中使用POSIX-style signs。 POSIX對位於格林威治(格林威治西部)後面的區域和格林威治(格林威治東部)之前區域的負面符號有積極跡象。

時區中的POSIX風格標誌與現今廣泛使用的ISO 8601中時區的定義相反。在ISO 8601時區格式中,負號表示區域落後於UTC(格林威治西部),正號表示區域位於UTC之前(格林威治東部)。這是現在已成爲標準用法的東西。在POSIX相反的定義

可能的原因是:

  • POSIX是UNIX,這是在美國,它的背後是UTC(格林威治以西)開發的一部分。 POSIX格式允許美國時區表示爲EST5,PST8,即省略(+)號。
  • 通常情況下,計算機程序和操作系統在內部完成UTC時間的所有工作。使用POSIX風格的標誌,您可以添加時間和時區以獲取UTC時間。例如:「03:30 PST8」或「03:30 GMT + 8」表示它是「11:30 UTC」。
+0

「Etc」是「Etcetera」的縮寫,在這種情況下,它是針對時區的分組,它不適合其他任何組合,即「其餘」。 –

+0

@chinoto:你想告訴我什麼?這正是我在我的回答中解釋的(除其他外)。您在評論之前是否閱讀過我的回答? –

+1

我不知道爲什麼我會發表評論......我記得,但是在這個頁面上沒有任何地方有人不確定「Etc」是什麼意思,很奇怪。 –