0Pricing
Java Academy · Урок

Форматирование с DateTimeFormatter

Разбирайте и форматируйте даты

«Форматирование с DateTimeFormatter» — бесплатный урок Java Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.

Преобразование дат в текст

Метод toString по умолчанию выводит дату в формате ISO. Чтобы управлять её представлением или разбирать текст не в формате ISO, используйте DateTimeFormatter из пакета java.time.format.

Пользовательский шаблон

Создайте форматировщик с помощью ofPattern. Буквы обозначают поля: yyyy — год, MM — месяц, dd — день.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        System.out.println(date.format(f));
    }
}

Форматирование времени

В шаблонах времени используются HH для часов в 24-часовом формате, mm для минут и ss для секунд.

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalTime time = LocalTime.of(14, 5, 30);
        DateTimeFormatter f = DateTimeFormatter.ofPattern("HH:mm:ss");
        System.out.println(time.format(f));
    }
}

Объединение даты и времени

Один шаблон может включать поля даты и времени для значения LocalDateTime.

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDateTime dt = LocalDateTime.of(2026, 5, 30, 9, 45);
        DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        System.out.println(dt.format(f));
    }
}

Текстовые названия месяцев

Повторение буквы месяца изменяет его представление: MM — это число, MMM — сокращённое название, например May, а MMMM — полное название.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH);
        System.out.println(date.format(f));
    }
}

Названия дней недели

Используйте EEEE для полного названия дня недели, а EEE — для сокращённой формы. Укажите Locale, чтобы язык результата был предсказуемым.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        DateTimeFormatter f = DateTimeFormatter.ofPattern("EEEE, dd MMM", Locale.ENGLISH);
        System.out.println(date.format(f));
    }
}

Двенадцатичасовой формат

Используйте строчные hh для часов в 12-часовом формате и a для обозначения AM или PM.

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        LocalTime time = LocalTime.of(15, 30);
        DateTimeFormatter f = DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);
        System.out.println(time.format(f));
    }
}

Разбор по шаблону

Тот же форматировщик может разобрать текст обратно в дату. Передайте его вторым аргументом в parse.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate date = LocalDate.parse("30/05/2026", f);
        System.out.println(date.getMonth());
    }
}

Обработка некорректных входных данных

Если текст не соответствует шаблону, разбор вызывает исключение DateTimeParseException. Поместите потенциально небезопасный разбор в конструкцию try-catch.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        try {
            LocalDate.parse("not a date", f);
        } catch (DateTimeParseException e) {
            System.out.println("Invalid date format!");
        }
    }
}

Встроенные форматировщики

Для распространённых задач можно не создавать шаблоны вручную, а использовать предопределённые форматировщики, например DateTimeFormatter.ISO_DATE.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        System.out.println(date.format(DateTimeFormatter.ISO_DATE));
    }
}

Повторное использование форматировщиков

DateTimeFormatter является неизменяемым и безопасным для использования из нескольких потоков, поэтому создайте его один раз и используйте повторно. Если в результате используются названия, всегда указывайте Locale, чтобы результат оставался единообразным.

Быстрая проверка

Проверьте свои знания о форматировании.

Итоги

Вы изучили форматирование даты и времени:

  • DateTimeFormatter.ofPattern задаёт пользовательский формат вывода
  • Буквы соответствуют полям: yyyy, MM, dd, HH, mm
  • Большее количество повторяющихся букв задаёт текстовые представления, например MMMM и EEEE
  • Тот же форматировщик разбирает текст, вызывая DateTimeParseException при некорректных входных данных
  • Форматировщики неизменяемы и пригодны для повторного использования; для названий передавайте Locale

Часто задаваемые вопросы

Урок «Форматирование с DateTimeFormatter» бесплатный?

Да — полный текст урока «Форматирование с DateTimeFormatter» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.

Чему я научусь в уроке «Форматирование с DateTimeFormatter»?

Разбирайте и форматируйте даты Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Форматирование с DateTimeFormatter»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. LocalDate, LocalTime, LocalDateTime
  2. Instant и Duration
  3. Period и арифметика дат
  4. Форматирование с DateTimeFormatter
← Назад к Java Academy