Я использую строку формата для DateTimeFormatter: uuuu-MM-dd'T'HH:mm:ssX
который должен поддерживать все возможные форматы смещения часового пояса, в том числе: Z, 00, 00:00, 0000
Согласно официальной документации DateTimeFormatter, квалификатор «X» должен соответствовать смещению в следующих форматах:
Смещение зоны X 'Z' для смещения нуля-X Z; -08; -0830; -08:30; -083015; -08:30:15;
но на самом деле это не так
строка ввода: "2014-01-01T00:30:00+00:00"
результат: java.time.format.DateTimeParseException: текст '2014-01-01T00:30:00+00:00' не может быть проанализирован, не проанализированный текст найден в индексе 22
строка ввода: "2014-01-01T00:30:00Z"
результат: верно
код:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX");
OffsetDateTime parsed = OffsetDateTime.parse(dateTimeAsString, formatter);
JDK 1.8.0_192 (Oracle, а не OpenJDK)
XXX
,XX
иX
. - person Ole V.V.   schedule 05.02.2019