解析带有 Instant Java 11 偏移量的字符串

joa*_*him 3 java java.time.instant

我正在尝试将以下字符串解析2021-10-15T08:39:05+02:00为一个Instant可以使用 Java 15 无缝运行的字符串,但对于 Java 11 会抛出错误。

java.time.format.DateTimeParseException: Text '2021-10-19T11:06:35+02:00' could not be parsed at index 19

为什么会这样?

Instant.parse("2021-10-15T08:39:05+02:00");
Run Code Online (Sandbox Code Playgroud)

编辑:Java 15

在此输入图像描述

And*_*ner 5

Instant.parse说:

字符串 ... 使用 进行解析DateTimeFormatter.ISO_INSTANT

因此,请阅读以下文档DateTimeFormatter.ISO_INSTANT

  • 爪哇15

    解析时,将使用 的行为DateTimeFormatterBuilder.appendOffsetId()来解析偏移量,根据需要将瞬时转换为 UTC

  • 爪哇11

    解析时...(没有关于如何解析偏移量的信息)

两者之间的行为发生了变化,以使DateTimeFormatter.ISO_INSTANT(以及使用它的代码制作)接受更广泛的输入。

Instant要使用Java 11 从该字符串中获取 an ,您可以首先解析为 a OffsetDateTime,然后使用toInstant()来获取相应的Instant.