Разбор ZonedDateTime из строки, содержащей миллисекунды - PullRequest
1 голос
/ 21 июня 2019

Мне нужно получить ZonedDateTime из строки следующего формата:

"26.06.2019T00:00:00.123+03:00"

Этот формат кажется стандартным, поэтому я использовал следующий код для анализа ZonedDateTime из строки:

ZonedDateTime.parse("26.06.2019T00:00:00.123+03:00");

Однако я получаю исключение:

Exception in thread "main" java.time.format.DateTimeParseException: Text '26.06.2019T00:00:00.123+03:00' could not be parsed at index 0

1 Ответ

4 голосов
/ 21 июня 2019

Формат, который вы используете, не является стандартным форматом, поскольку вы используете dd.mm.yyyy для даты вместо yyyy-mm-dd.Поэтому он не работает с форматером по умолчанию, используемым parse().

. Вы можете легко настроить пользовательский DateTimeFormatter для своего особого случая:

String pattern = "dd.MM.yyyy'T'HH:mm:ss.SSSXXX";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

String input = "26.06.2019T00:00:00.123+03:00";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(input, dtf);

Выходиз System.out.println(zonedDateTime) будет правильный ISO-формат:

2019-06-26T00:00:00.123+03:00

Согласно комментарию Джеспера , я бы посоветовал вам использовать действующий стандартный формат и попытаться убедить того, кто поставляетвы эти строки, чтобы использовать фактический формат ISO.

...