2014-09-10 19 views
0

根據的JavaDoc時區的...「GMT」是Java TimeZone中的縮寫,如果它是可以使用它的話?

ID - 該ID的時區,無論是一個縮寫,如「PST」,一個 全名,如「美國/洛杉磯」,或自定義ID如 「GMT-8:00」。請注意,縮寫的支持僅適用於JDK 1.1.x 兼容性,應使用全名。

重要的一點幸福...

的縮寫,如「PST」注意縮寫的支持只是爲了JDK 1.1.x版本的兼容性,應該使用全名。

這是否意味着「GMT-0:00」可以,但應避免使用「GMT」,或使用「GMT」不作爲縮寫?

與我的其他question類似,只是試圖使其更具體。

回答

1

只是看了看源代碼。如果我正確讀取它,getTimeZone(String ID)將調用一個名爲parseCustomTimeZone的私有方法,該方法基本上檢查該ID是否以GMT開頭並返回null,否則getTimeZone會回落到GMT + 0的默認時區。例如UTC,PST,等等都支持在suninfo內部類的ZoneInfo中。您可以列出所有可用的時區作爲javadoc提到的。這裏的代碼位時區相關的:

public static synchronized TimeZone getTimeZone(String ID) { 
    return getTimeZone(ID, true); 
} 
... 
private static TimeZone getTimeZone(String ID, boolean fallback) { 
    TimeZone tz = ZoneInfo.getTimeZone(ID); 
    if (tz == null) { 
     tz = parseCustomTimeZone(ID); 
     if (tz == null && fallback) { 
      tz = new ZoneInfo(GMT_ID, 0); 
     } 
    } 
    return tz; 
} 
... 
private static final TimeZone parseCustomTimeZone(String id) { 
    int length; 

    // Error if the length of id isn't long enough or id doesn't 
    // start with "GMT". 
    if ((length = id.length()) < (GMT_ID_LENGTH + 2) || 
     id.indexOf(GMT_ID) != 0) { 
     return null; 
    } 
    ... 

如果你是在Java的8,你幾乎要不要使用,改用新的時間API。否則,使用像喬達時間的東西。

+0

所以要清楚的東西像PST的處理通過ZoneInfo應該避免的權利?此外,格林威治時間不屬於這一點,所以它沒問題。這聽起來是對的嗎? – Jackie 2014-09-15 14:52:57

+0

是的,聽起來是正確的。 – 2014-09-17 08:37:08

1

這意味着使用完整的名稱,而不是縮寫,

Java Docs

三字母時區ID爲了與JDK 1.1.x中,一些 其他三字母時區ID(如兼容性「PST」,「CTT」,「AST」)也支持 。但是,它們的使用已被棄用,因爲多個時區經常使用相同的縮寫(例如,「CST」 可能是美國「中央標準時間」和「中國標準時間」),而Java平臺則只能使用 承認其中之一。

即代替使用

TimeZone.getTimeZone("PST"); 

使用

TimeZone.getTimeZone("America/Los_Angeles"); 

是由於上面提到的原因建議。

此外,getTimeZone(String ID)返回

指定的時區,或者如果給定的ID不能被 理解的GMT區。


總之,

使用TimeZone.getTimeZone("GMT");是完全可以接受的,因爲這是兩個編號和名稱即是可接受的ID在TimeZone.getAvailableIDs()名單之一。

另外,如果你想不被支持的ID之一表示的時區,然後自定義時區ID可以被指定爲生成TimeZone

CustomID: 
     GMT Sign Hours : Minutes (or) 
     GMT Sign Hours Minutes (or) 
     GMT Sign Hours 
+0

據我所知,'TimeZone.getAvailableIDs()'返回所有支持的ID,包括不贊成使用的縮寫。例如,它確實返回「PST」。 – shmosel 2017-01-16 09:24:35

相關問題