Форматирование с 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 — локальная установка не требуется.
Все уроки этого курса
- LocalDate, LocalTime, LocalDateTime
- Instant и Duration
- Period и арифметика дат
- Форматирование с DateTimeFormatter