DateTimeFormatter из java.time.format нужен, чтобы превращать дату/время в строку и обратно по заданному шаблону. Это часто встречается в задачах на Java: вывод отчётов, парсинг ввода пользователя, хранение даты в читаемом виде. Используются готовые форматтеры (например, ISO_LOCAL_DATE) и шаблоны через ofPattern() с символами yyyy, MM, dd, HH, mm. Форматирование делается методом format(), разбор — LocalDate.parse(text, formatter). В этом интерактивном уроке — примеры, задания и тренировка без регистрации: от шаблонов до поиска ошибок формата.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
- Работа с датами: LocalDate и LocalTime.
- Форматирование дат (DateTimeFormatter).
- Класс Math (min, max, pow, random).
- Ввод данных (Scanner).
- Работа с Enum (перечисления).
1. Сопоставить токены шаблона и смысл
В левой колонке приведены токены (символы формата) класса DateTimeFormatter в Java. В правой колонке — их значения или описание. Сопоставьте каждый токен с соответствующим описанием. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок перемешан. Задание поможет закрепить знание основных шаблонов для форматирования дат и времени.
yyyyMMddHHmmssa2. Заполнить шаблон форматирования
Дополните фрагмент кода так, чтобы он создавал объект LocalDate, форматировал его с помощью DateTimeFormatter в указанном формате и выводил результат. Обратите внимание на комментарий, описывающий требуемый формат вывода даты. Заполните пропуски корректными значениями, не меняя структуру кода.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2023, 12, 31);
// Шаблон для формата: день.месяц.год (две цифры, точка, две цифры, точка, четыре цифры)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(input1S);
String formattedDate = input2S;
System.out.println(formattedDate);
}
}3. Исправить типичную ошибку в шаблоне
В этом фрагменте кода используется класс DateTimeFormatter для форматирования даты и времени. Однако в шаблоне форматирования допущена ошибка, из-за которой вывод получается некорректным: месяц и минуты отображаются не на своих местах. Найдите и исправьте ошибку в строке с объявлением шаблона, чтобы дата выводилась в правильном формате.
import java.time.LocalDateTime;import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.mm.yyyy HH:MM:ss"); LocalDateTime date = LocalDateTime.of(2023, 12, 25, 14, 30, 45); String formattedDate = date.format(formatter); System.out.println(formattedDate); }}4. Выбрать правильный вызов parse/format
В данном фрагменте кода необходимо правильно использовать методы класса DateTimeFormatter для разбора строки в дату и форматирования даты в строку. Вам нужно заполнить пропуски, выбрав подходящие вызовы методов из выпадающего списка. Обратите внимание на соответствие типов: для разбора строки используется LocalDate.parse с форматтером, для создания форматтера — DateTimeFormatter.ofPattern, а для форматирования даты — метод format у объекта LocalDate. Код должен корректно работать с заданным форматом даты 'yyyy-MM-dd'.
String dateStr = "2023-12-31";
DateTimeFormatter formatter = input1S;
LocalDate date = input2S;
String formatted = input3S;
System.out.println(formatted);5. Предсказать строку после форматирования
Проанализируйте код на Java, который создает объект LocalDateTime и форматирует его с помощью DateTimeFormatter с заданным шаблоном. Выберите строку, которая будет выведена в консоль в результате выполнения программы. Обратите внимание на формат дня, месяца, года, часов, минут, секунд и указатель AM/PM.
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.of(2023, 12, 25, 15, 30, 45);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm:ss a");
String formatted = dateTime.format(formatter);
System.out.println(formatted);
}
}6. Упорядочить шаги: форматирование и парсинг
Перед вами перечислены шаги работы с датами и временем в Java с использованием класса DateTimeFormatter. Эти шаги описывают процесс форматирования даты в строку и обратного парсинга строки в объект даты. Шаги перемешаны. Вам необходимо восстановить их единственно верную логическую последовательность, отражающую стандартный порядок действий: создание форматтера, получение даты, форматирование, вывод, взятие строки для парсинга и сам парсинг.
7. Собрать пример: строка → LocalDate → строка
Из предложенных строк соберите корректную Java-программу, которая демонстрирует преобразование строки в объект LocalDate с использованием DateTimeFormatter, а затем форматирует LocalDate обратно в строку и выводит результат. Одна из строк лишняя и не должна входить в решение. Учтите, что импорты можно расположить в любом порядке, но они должны идти до объявления класса.
import java.time.LocalDate;import java.time.format.DateTimeFormatter;public class Main { public static void main(String[] args) { String dateStr = "2023-12-31"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse(dateStr, formatter); String formattedDate = date.format(formatter); System.out.println(formattedDate); LocalDate wrongDate = LocalDate.parse("31-12-2023"); }}