我正試圖解析美國/阿留申時間戳。這在過去有效,我無法找出爲什麼它不再有效。我正在運行的Java 1.8更新72Java 1.8拒絕使用US/Aleutian(HAST)時區解析日期嗎?
的代碼如下:
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
sdf.setTimeZone(TimeZone.getTimeZone("US/Aleutian"));
// the following line throws an parsing exception
Date d = sdf.parse("1969-12-31T13:00:00HAST");
System.out.println(sdf.format(d));
} catch (Exception e) {
e.printStackTrace();
}
...的Date d = sdf.parse("1969-12-31T13:00:00HAST");
行拋出一個異常,但我無法找出什麼地方錯了:
java.text.ParseException: Unparseable date: "1969-12-31T13:00:00HAST"
at java.text.DateFormat.parse(Unknown Source)
我確信這在過去有效。我研究了HAST時區,它是有效的。我不知道爲什麼這不適合我。
任何人都可以找出發生了什麼?如果這對你有用,你可以請列出你的Java版本,以便我們可以找出是否/何時破壞了?
謝謝!
'TimeZone.getTimeZone(「HAST」)'現在返回GMT,根據[文檔](https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html #getTimeZone-java.lang.String-)表示請求的TimeZone ID未被理解。我不知道爲什麼HAST不再被接受。 – VGR
哇!這很奇怪......我不確定,這看起來像Java本身的錯誤。但是一個奇怪的。爲什麼這會被刪除? o.O –
我建議儘可能使用id代替同義詞:「America/Adak」(而不是「US/Aleutian」)。 –