Encodera

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

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

Как отформатировать дату

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

Создайте DateTimeFormatter с шаблоном и передайте его в format():

void main() {
    var date = LocalDate.of(2026, 3, 8);
    var formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
 
    IO.println(date.format(formatter));
}

Результат:

08.03.2026

Символы шаблона

yyyy — год, MM — месяц числом, MMM/MMMM — название месяца, dd — день, HH — часы (0–23), mm — минуты, ss — секунды, EEEE — день недели:

void main() {
    var dateTime = LocalDateTime.of(2026, 3, 8, 14, 5, 9);
 
    IO.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    IO.println(dateTime.format(DateTimeFormatter.ofPattern("EEEE, d MMMM yyyy", Locale.ENGLISH)));
}

Результат:

2026-03-08 14:05:09
Sunday, 8 March 2026

На другом языке

Названия месяцев и дней зависят от локали:

void main() {
    var date = LocalDate.of(2026, 3, 8);
 
    IO.println(date.format(DateTimeFormatter.ofPattern("d MMMM yyyy", Locale.GERMAN)));
    IO.println(date.format(DateTimeFormatter.ofPattern("d MMMM yyyy", Locale.of("ru"))));
}

Результат:

8 März 2026
8 марта 2026

Готовые форматы

ofLocalizedDate() выбирает формат, принятый в стране:

void main() {
    var date = LocalDate.of(2026, 3, 8);
    var style = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
 
    IO.println(date.format(style.withLocale(Locale.US)));
    IO.println(date.format(style.withLocale(Locale.UK)));
    IO.println(date.format(DateTimeFormatter.ISO_DATE));
}

Результат:

Mar 8, 2026
8 Mar 2026
2026-03-08

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

Перепутать регистр букв. MM — месяц, mm — минуты; YYYY — «год недели», который в конце декабря может отличаться от обычного года:

void main() {
    var dateTime = LocalDateTime.of(2025, 12, 29, 10, 45);
 
    IO.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    IO.println(dateTime.format(DateTimeFormatter.ofPattern("YYYY-mm-dd", Locale.UK)));
}

Результат:

2025-12-29
2026-45-29

Во второй строке и год неправильный, и вместо месяца стоят минуты.

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

  • DateTimeFormatter.ofPattern() — Создаёт форматтер для вывода и разбора дат по шаблону вроде dd.MM.yyyy.

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

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