Форматирование дат (DateTimeFormatter)

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

DateTimeFormatter из java.time.format нужен, чтобы превращать дату/время в строку и обратно по заданному шаблону. Это часто встречается в задачах на Java: вывод отчётов, парсинг ввода пользователя, хранение даты в читаемом виде. Используются готовые форматтеры (например, ISO_LOCAL_DATE) и шаблоны через ofPattern() с символами yyyy, MM, dd, HH, mm. Форматирование делается методом format(), разбор — LocalDate.parse(text, formatter). В этом интерактивном уроке — примеры, задания и тренировка без регистрации: от шаблонов до поиска ошибок формата.

Список тем

1. Сопоставить токены шаблона и смысл

id: 40524_dtf_01_compare_tokens

В левой колонке приведены токены (символы формата) класса DateTimeFormatter в Java. В правой колонке — их значения или описание. Сопоставьте каждый токен с соответствующим описанием. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок перемешан. Задание поможет закрепить знание основных шаблонов для форматирования дат и времени.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
yyyy
MM
dd
HH
mm
ss
a
Год (4 цифры)
AM/PM маркер (например, AM или PM)
Месяц (01-12)
Часы (00-23)
Секунды (00-59)
Минуты (00-59)
День месяца (01-31)
Сообщения
Проверить
Показать подсказку

2. Заполнить шаблон форматирования

id: 40524_dtf_02_replace_pattern

Дополните фрагмент кода так, чтобы он создавал объект 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 сек.
Показать подсказку

3. Исправить типичную ошибку в шаблоне

id: 40524_dtf_03_error_wrong_pattern

В этом фрагменте кода используется класс 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);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Выбрать правильный вызов parse/format

id: 40524_dtf_04_selectfill_parse

В данном фрагменте кода необходимо правильно использовать методы класса 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);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Предсказать строку после форматирования

id: 40524_dtf_05_predict_output

Проанализируйте код на 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. Упорядочить шаги: форматирование и парсинг

id: 40524_dtf_06_sequencing_steps

Перед вами перечислены шаги работы с датами и временем в Java с использованием класса DateTimeFormatter. Эти шаги описывают процесс форматирования даты в строку и обратного парсинга строки в объект даты. Шаги перемешаны. Вам необходимо восстановить их единственно верную логическую последовательность, отражающую стандартный порядок действий: создание форматтера, получение даты, форматирование, вывод, взятие строки для парсинга и сам парсинг.

Расставьте строки в правильном порядке
Получить текущую дату и время, вызвав LocalDateTime.now().
Вывести отформатированную строку в консоль с помощью System.out.println().
Распарсить строку обратно в объект LocalDateTime, используя метод parse() и тот же форматтер.
Создать объект DateTimeFormatter, указав шаблон форматирования, например, "dd.MM.yyyy HH:mm:ss".
Взять строку, представляющую дату в том же формате, что и шаблон форматтера.
Отформатировать объект LocalDateTime в строку, используя метод format() и созданный форматтер.
Сообщения
Проверить
Показать подсказку

7. Собрать пример: строка → LocalDate → строка

id: 40524_dtf_07_build_parts_full

Из предложенных строк соберите корректную 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");
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру