У меня есть код ниже.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
LocalDateTime myDate = LocalDateTime.parse("2020-11-16T02:27:39.345Z", formatter);
Но он выдает ошибку ниже во второй строке. Не знаю, почему он жалуется Z
java.time.format.DateTimeParseException: Text '2020-11-16T02:27:39.345Z' could not be parsed at index 23
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:492)
"yyyy-MM-dd'T'HH:mm:ss.SSSz"
, либо"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
. - person ernest_k   schedule 16.11.2020Z
иz
описана здесь.'Z'
просто заставляет синтаксический анализатор воспринимать букву буквально. - person ernest_k   schedule 16.11.2020Instant.parse("2020-11-16T02:27:39.345Z");
илиOffsetDateTime.parse("2020-11-16T02:27:39.345Z")
. См. этот вопрос. Если вам нужно время в вашем местном часовом поясе, преобразуйте его вZonedDateTime
, а не вLocalDateTime
. - person Ole V.V.   schedule 18.11.2020LocalDateTime
- неправильный класс. Ваша строка сообщает нам о моменте времени, аLocalDateTime
не может содержать момент времени. Это немного похоже на сохранение значенияlong
в переменнойint
: преобразование возможно, но вы теряете важную информацию. - person Ole V.V.   schedule 26.11.2020