Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как преобразовать строку в дату

Короткий ответ

Строку в формате ISO (2026-03-08) понимает LocalDate.parse() без дополнительных настроек:

void main() {
    LocalDate date = LocalDate.parse("2026-03-08");
 
    IO.println(date);
    IO.println(date.getDayOfWeek());
}

Результат:

2026-03-08
SUNDAY

Свой формат

Для других форматов передайте DateTimeFormatter с шаблоном:

void main() {
    var formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
    LocalDate date = LocalDate.parse("08.03.2026", formatter);
 
    IO.println(date);
}

Результат:

2026-03-08

Дата и время

LocalDateTime.parse() разбирает строку с временем:

void main() {
    var formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
    LocalDateTime meeting = LocalDateTime.parse("15/04/2026 09:30", formatter);
 
    IO.println(meeting);
    IO.println(meeting.plusHours(2).toLocalTime());
}

Результат:

2026-04-15T09:30
11:30

Месяц словом

Если в строке название месяца, укажите язык:

void main() {
    var formatter = DateTimeFormatter.ofPattern("d MMMM yyyy", Locale.ENGLISH);
    IO.println(LocalDate.parse("8 March 2026", formatter));
}

Результат:

2026-03-08

Частая ошибка

Не обработать неверную строку. parse() выбрасывает DateTimeParseException:

void main() {
    LocalDate.parse("2026-02-30");
}

Результат:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2026-02-30' could not be parsed: Invalid date 'FEBRUARY 30'
Caused by: java.time.DateTimeException: Invalid date 'FEBRUARY 30'

Для пользовательского ввода оборачивайте разбор в try/catch.

Функции из этого ответа

  • LocalDate.parse() — Разбирает дату из строки — в формате ISO (2025-03-14) или по шаблону.
  • DateTimeFormatter.ofPattern() — Создаёт форматтер для вывода и разбора дат по шаблону вроде dd.MM.yyyy.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.