Data e hora do Java 8: analise a string ISO 8601 sem dois pontos no deslocamento [duplicado]

Esta pergunta já tem uma resposta aqui:

Não é possível analisar String no formato ISO 8601, sem dois pontos no deslocamento, para Java 8 Date 1 resposta

Tentamos analisar a seguinte string ISO 8601 DateTime com deslocamento de fuso horário:

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

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

Ambas as abordagens falham (o que faz sentidoOffsetDateTime use também oDateTimeFormatter.ISO_OFFSET_DATE_TIME) por causa dos dois pontos no deslocamento do fuso horário.

java.time.format.DateTimeParseException: o texto '2022-03-17T23: 00: 00.000 + 0000' não pôde ser analisado no índice 23

Mas de acordo comWikipedia existem 4 formatos válidos para um deslocamento de fuso horário:

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

Outras estruturas / idiomas podem analisar essa sequência sem problemas, por exemplo o JavascriptDate() ou JacksonsISO8601Utils (eles discutem esse problemaaqui)

Agora poderíamos escrever nossos própriosDateTimeFormatter com um RegEx complexo, mas na minha opinião ojava.time A biblioteca deve poder analisar essa sequência ISO 8601 válida por padrão, pois é uma sequência válida.

Por enquanto, usamos JacksonsISO8601DateFormat, mas preferimos usar o funcionáriodate.time biblioteca para trabalhar. Qual seria a sua abordagem para resolver esse problema?

questionAnswers(4)

yourAnswerToTheQuestion