Java >> Java チュートリアル >  >> Tag >> String

Instant Java 11へのオフセットで文字列を解析する

次の文字列 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");

編集:Java 15

答え

Instant.parse 言います:

文字列 … は DateTimeFormatter.ISO_INSTANT を使用して解析されます .

DateTimeFormatter.ISO_INSTANT のドキュメントを読んでください。 :

    <リ>

    Java 15

    解析時、DateTimeFormatterBuilder.appendOffsetId() の動作 オフセットを解析するために使用され、必要に応じてインスタントを UTC に変換します

    <リ>

    Java 11

    解析時 … (オフセットがどのように解析されるかについては何もありません)

DateTimeFormatter.ISO_INSTANT にするために、2 つの間で動作が変更されました。 (およびそれを使用したコード作成) は、より広い範囲の入力を受け入れます。

Instant を取得するには Java 11 でその文字列から、最初に OffsetDateTime に解析できます 、次に toInstant() を使用します 対応する Instant を取得する .


Java タグ