Java 1.8拒绝使用美国/阿留申(HAST)时区解析日期?
作者:互联网
我正在尝试解析美国/阿留申群岛的时间戳.过去这种做法行之有效,但我不知道为什么它不再有效.我正在运行Java 1.8 update 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();
}
…日期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版本,以便我们确定是否/何时损坏了它?
谢谢!
解决方法:
找到了答案.
根据this,在Java 6更新101中删除了该缩写:
“根据美国政府印刷局的样式,夏威夷-阿留申语标准和夏令时的缩写已从HAST / HADT更改为HST / HDT.自1983年以来,仅影响America / Adak,因为America / Honolulu已在使用新样式”.
因此,我将继续使用HST.
感谢大家的意见和建议!
标签:timezone,datetime-format,timestamp,java,parsing 来源: https://codeday.me/bug/20191119/2033255.html