Объяснение сообщения об ошибке:
2018-10-20T14:27:47.3949709+03:00
имеет длину 33 символа, поэтому
Text '2018-10-20T14: 27: 47.3949709+03: 00 'не удалось проанализировать по индексу 33
означает, что ожидается 34-й символ, которого там нет (он проиндексирован 0).
Проблема
То, как вы определили Formatter
, которое будет принимать 2018-10-20T14: 27: 47.3949709 + 03: 002018-10-20`
Решение:
Чтобы преодолеть это, вы можете либо опустить .append(DateTimeFormatter.ofPattern("yyyy-MM-dd")
, либо определить Formatter
, который принимает оба формата, с startOptional
и endOptional
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.optionalStart()
.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.optionalEnd()
.optionalStart()
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))
.optionalEnd().toFormatter();
Вы можете увидеть пример, работающий на https://ideone.com/RDVHYG
Примечание : "yyyy-MM-dd" не дает достаточно информации для LocalDateTime
, поэтому я добавил"ЧЧ: мм"