DateTimeFormatter formatter = new DateTimeFormatterBuilder()
// date/time
.append(DateTimeFormatter.ISO_DATE_TIME)
.toFormatter();
//can't handle the first example
System.out.println(OffsetDateTime.parse("2022-03-17T23:00:00.000+0000", formatter));
System.out.println(OffsetDateTime.parse("2022-03-17T23:00:00.000+00", formatter));
System.out.println(OffsetDateTime.parse("2022-03-17T23:00:00.000+00:00", formatter));
System.out.println(OffsetDateTime.parse("2022-03-17T23:00:00.000Z", formatter));
Solution / work around is in Java 8 Date and Time: parse ISO 8601 string without colon in offset
I am checking why Java 8 ISO_DATE_TIME can't handle the format which is an ISO Complaint - https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
<time>Z
<time>±hh:mm
<time>±hhmm
<time>±hh
My question is simple and straightforward -> Why is Java 8 not handling formats mentioned as part of ISO Standard ( only 4 ISO offset formats )?
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_DATE_TIME
https://docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html#getId--