SimpleDateFormat抛出Unparseable异常[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我知道有很多这些,但我似乎找不到这种日期格式的神奇字符串:

String textDate = "2018-04-25T18:23:57.556Z";

我的代码是:

String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
simpleDateFormat.parse(textDate)

有什么奇怪的是日期字符串本身有一个“Z”,所以我不确定时区是如何工作的。

如果我将日期格式更改为:

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

它有效,但我不知道如何获得时区......

java
1个回答
4
投票

Z = UTC

文字“Z”实际上是ISO 8601时代的UTC日期时间标准的一部分。当“Z”(Zulu)在一段时间结束时,它表示该时间是UTC,所以真正的文字Z是时间的一部分。

在解析/生成字符串时,java.time类在默认情况下使用ISO 8601标准格式。 Instant类代表UTC的一个时刻,非常适合您的输入字符串。

Instant instant = Instant.parse( "2018-04-25T18:23:57.556Z" ) ;
© www.soinside.com 2019 - 2024. All rights reserved.