Как отформатировать дату
Короткий ответ
Создайте 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.