Как анализировать ZonedDateTime с миллисекундами

Jira предоставляет мне этот формат даты через Rest API:
2021-01-21T11:08:45.000+0100

Как я могу разобрать это на LocalDateTime в Java?

Я попытался

ZonedDateTime.parse("2021-01-21T11:08:45.000+0100", DateTimeFormatter.ISO_OFFSET_DATE_TIME);

Или это:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
ZonedDateTime.parse("2021-01-21T11:08:45.000+0100"), formatter);

Результат DateTimeParseException


person Thomas Lang    schedule 22.01.2021    source источник
comment
Ваша строка содержит смещение UTC (+0100), а не часовой пояс. Поэтому, если у вас нет очень специфических требований, предпочтите анализировать OffsetDateTime, а не ZonedDateTime.   -  person Ole V.V.    schedule 22.01.2021
comment
comment
Спасибо @OleV.V. Ваш второй комментарий делает свое дело. Тем не менее мне пришлось использовать данный форматер этой ссылки. Итак, оба решения работают, ваше предложение и выбранный ответ.   -  person Thomas Lang    schedule 25.01.2021


Ответы (1)


Поскольку смещение зоны в вашем значении имеет формат +0100, его нельзя проанализировать ни с одним из предопределенных средств форматирования, таких как DateTimeFormatter.ISO_OFFSET_DATE_TIME, так как он ожидает, что он будет в формате +01:00

Вы можете разобрать 2021-01-21T11:08:45.000+0100 с шаблоном "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

ZonedDateTime.parse("2021-01-21T11:08:45.000+0100", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"))

Ссылка на DateTimeFormatter находится здесь .

person Madhu Bhat    schedule 22.01.2021
comment
Оно работает. Большое спасибо - также за вашу ссылку и объяснение - person Thomas Lang; 22.01.2021