Метод parse
Метод parse класса DateTimeFormatter разбирает
строку с датой и временем и возвращает объект
TemporalAccessor. В первом параметре мы передаем
строку для разбора, во втором необязательном параметре -
форматтер, согласно которому нужно выполнить разбор.
Если форматтер не указан, используется форматтер
по умолчанию, заданный в самом объекте DateTimeFormatter.
Полученный объект TemporalAccessor затем можно
преобразовать в конкретный тип даты или времени, например
в LocalDate, LocalTime или LocalDateTime,
с помощью метода from.
Синтаксис
formatter.parse(text, [position])
DateTimeFormatter.parse(text, [formatter])
Пример
Давайте разберем строку с датой в объект LocalDate,
используя форматтер с шаблоном "yyyy-MM-dd":
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main
{
public static void main(String[] args)
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse("2025-03-15", formatter);
System.out.println(date);
}
}
Результат выполнения кода:
"2025-03-15"
Пример
Давайте разберем строку с датой и временем в объект
LocalDateTime, используя метод parse
самого класса LocalDateTime с форматтером:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main
{
public static void main(String[] args)
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
LocalDateTime dateTime = LocalDateTime.parse("15.03.2025 14:30", formatter);
System.out.println(dateTime);
}
}
Результат выполнения кода:
"2025-03-15T14:30"
Пример
Давайте получим объект TemporalAccessor
напрямую через метод parse класса
DateTimeFormatter, а затем извлечем из него
конкретные поля даты:
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
public class Main
{
public static void main(String[] args)
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
var parsed = formatter.parse("2025-03-15");
int year = parsed.get(ChronoField.YEAR);
int month = parsed.get(ChronoField.MONTH_OF_YEAR);
int day = parsed.get(ChronoField.DAY_OF_MONTH);
System.out.println(year + " " + month + " " + day);
}
}
Результат выполнения кода:
"2025 3 15"
Смотрите также
-
класс
DateTimeFormatter,
который форматирует и разбирает даты и время -
метод
ofPattern,
который создает форматтер по шаблону -
метод
format,
который форматирует дату в строку -
метод
parseкласса LocalDateTime,
который разбирает строку в дату и время