只是看了看源代碼。如果我正確讀取它,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。否則,使用像喬達時間的東西。
所以要清楚的東西像PST的處理通過ZoneInfo應該避免的權利?此外,格林威治時間不屬於這一點,所以它沒問題。這聽起來是對的嗎? – Jackie 2014-09-15 14:52:57
是的,聽起來是正確的。 – 2014-09-17 08:37:08