Java LocalDateTime класс представляет момент в локальной временной шкале, т.е. без какой-либо информации о часовом поясе. Узнайте, как преобразовать строку в объект LocalDateTime в Java.
1. Разбор строки в LocalDateTime
Метод LocalDateTime.parse() принимает два аргумента. Первый аргумент — это строка, представляющая дату. А второй необязательный аргумент — это экземпляр DateTimeFormatter, задающий любой пользовательский шаблон.
1.1. Шаблон по умолчанию -> гггг-ММ-ддТчч:мм:сс
Шаблон даты по умолчанию — DateTimeFormatter.ISO_LOCAL_DATE_TIME, то есть гггг-ММ-ддТчч:мм:сс.
Формат состоит из следующего:
- ISO_LOCAL_DATE
- Буква «Т». Анализ нечувствителен к регистру.
- ISO_LOCAL_TIME
ISO_LOCAL_DATE_TIME = ISO_LOCAL_DATE + 'T' + ISO_LOCAL_TIME
LocalDateTime today = LocalDateTime.parse("2019-03-27T10:15:30");System.out.println(today);
Вывод программы:
2021-03-27T10:15:30
1.2 Пользовательские шаблоны
Пользовательские шаблоны можно построить с помощью DateTimeFormatter. Затем передайте его экземпляр в качестве второго аргумента методу LocalDateTime.parse().
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a");LocalDateTime dateTime = LocalDateTime.parse("2019-03-27 10:15:30 AM", formatter);System.out.println(dateTime);
Вывод программы.
2021-03-27T10:15:30
2. Шаблоны, специфичные для локали
Иногда у нас могут быть даты в определенных локалях, например, французских, например, 29-мар-2019 будет записано на французском как 29-мар-2019. Чтобы проанализировать такие даты, используйте метод DateTimeFormatter withLocale(), чтобы получить форматировщик в этой локали и проанализировать даты.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMMM-dd HH:mm:ss a").withLocale(Locale.FRENCH);LocalDateTime date = LocalDateTime.parse("2019-mai-29 10:15:30 AM", formatter);System.out.println(date);
Вывод программы.
2021-05-29T10:15:30