Fecha y hora de Java 8: analizar la cadena ISO 8601 sin dos puntos en el desplazamiento [duplicado]

Esta pregunta ya tiene una respuesta aquí:

No se puede analizar la cadena en formato ISO 8601, sin dos puntos en el desplazamiento, a Java 8 Date 1 respuesta

Intentamos analizar la siguiente cadena de fecha y hora ISO 8601 con desplazamiento de zona horaria:

final String input = "2022-03-17T23:00:00.000+0000";

OffsetDateTime.parse(input);
LocalDateTime.parse(input, DateTimeFormatter.ISO_OFFSET_DATE_TIME);

Ambos enfoques fallan (lo que tiene sentido comoOffsetDateTime también use elDateTimeFormatter.ISO_OFFSET_DATE_TIME) debido a los dos puntos en el desplazamiento de la zona horaria.

java.time.format.DateTimeParseException: el texto '2022-03-17T23: 00: 00.000 + 0000' no se pudo analizar en el índice 23

Pero de acuerdo aWikipedia Hay 4 formatos válidos para un desplazamiento de zona horaria:

<time>Z 
<time>±hh:mm 
<time>±hhmm 
<time>±hh

Otros marcos / idiomas pueden analizar esta cadena sin ningún problema, p. el JavascriptDate() o JacksonsISO8601Utils (discuten este temaaquí)

Ahora podríamos escribir el nuestroDateTimeFormatter con un complejo RegEx, pero en mi opinión eljava.time la biblioteca debería poder analizar esta cadena ISO 8601 válida de forma predeterminada, ya que es válida.

Por ahora usamos JacksonsISO8601DateFormat, pero preferiríamos usar el oficialdate.time biblioteca para trabajar. ¿Cuál sería su enfoque para abordar este problema?

Respuestas a la pregunta(4)

Su respuesta a la pregunta