"2021-09-17 11:48:06 UTC"

Я хочу проанализировать следующую строку и создать объект LocalDateTime или Instant

Я знаю, ты можешь написать что-то вроде этого

String dateTime = "2021-09-17 11:48:06 UTC";
LocalDateTime dt = LocalDateTime.parse(dateTime,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

Что делать с частью UTC в строке?

1
Tendai 17 Сен 2021 в 15:04

1 ответ

Лучший ответ

«2021-09-17 11:48:06 UTC» не является местным временем даты: это время даты, потому что оно имеет часовой пояс. И поскольку ваше время имеет часовой пояс, оно не соответствует вашему шаблону, а это не так.

Если ваши временные строки всегда заканчиваются точно на «UTC», вы можете сделать это литералом в шаблоне:

DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss 'UTC'");

Если вам нужно работать с часовыми поясами, отличными от UTC, вы можете использовать z:

DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");

Но обратите внимание, что это для анализа зонированной даты и времени; из этого вы можете извлечь местную дату и время:

ZonedDateTime zdt = ZonedDateTime.parse(dateTime,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
LocalDateTime ldt =z dt.toLocalDateTime();
2
Andy Turner 17 Сен 2021 в 13:16