I am trying to parse the following string 2021-10-15T08:39:05+02:00 into an Instant this works seamlessly using Java 15 but throws an error for Java 11.
java.time.format.DateTimeParseException: Text '2021-10-19T11:06:35+02:00' could not be parsed at index 19
Why is that the case?
Instant.parse("2021-10-15T08:39:05+02:00");
Edit: Java 15
Advertisement
Answer
Instant.parse says:
The string … is parsed using
DateTimeFormatter.ISO_INSTANT.
So, read the docs for DateTimeFormatter.ISO_INSTANT:
-
When parsing, the behaviour of
DateTimeFormatterBuilder.appendOffsetId()will be used to parse the offset, converting the instant to UTC as necessary -
When parsing … (nothing about how the offset is parsed)
The behavior has changed between the two to make DateTimeFormatter.ISO_INSTANT (and code making using of it) accept a broader range of inputs.
To get an Instant from that string with Java 11, you can first parse to a OffsetDateTime, then use toInstant() to get the corresponding Instant.
