Java 1.8 拒绝解析 US/Aleutian (HAST) 时区的日期?
Java 1.8 refuses to parse dates with US/Aleutian (HAST) time zone?
我正在尝试解析 US/Aleutian 时间戳。这在过去有效,但我无法找出为什么它不再有效。我是 运行 Java 1.8 更新 72.
代码如下:
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 版本,以便我们找出 if/when 这是否已损坏?
谢谢!
SimpleDateFormat 是一个旧的 class,有一些问题。尝试使用 class java.time.format.DateTimeFormatter class in Java 8. 尝试这样的事情:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz");
Instant instant = formatter.parse("1969-12-31T13:00:00HAST", Instant::from);
Date date = Date.from(instant);
找到答案。
根据 this,该缩写已在 Java 6 更新 101 中删除:
"The abbreviations for Hawaii-Aleutian standard and daylight times have been changed from HAST/HADT to HST/HDT, as per US Government Printing Office style. This affects only America/Adak since 1983, as America/Honolulu was already using the new style."
所以我将继续使用 HST。
感谢大家的投稿!
我正在尝试解析 US/Aleutian 时间戳。这在过去有效,但我无法找出为什么它不再有效。我是 运行 Java 1.8 更新 72.
代码如下:
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 版本,以便我们找出 if/when 这是否已损坏?
谢谢!
SimpleDateFormat 是一个旧的 class,有一些问题。尝试使用 class java.time.format.DateTimeFormatter class in Java 8. 尝试这样的事情:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz");
Instant instant = formatter.parse("1969-12-31T13:00:00HAST", Instant::from);
Date date = Date.from(instant);
找到答案。
根据 this,该缩写已在 Java 6 更新 101 中删除:
"The abbreviations for Hawaii-Aleutian standard and daylight times have been changed from HAST/HADT to HST/HDT, as per US Government Printing Office style. This affects only America/Adak since 1983, as America/Honolulu was already using the new style."
所以我将继续使用 HST。
感谢大家的投稿!