Menu
CoddyTech

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

Часть раздела Логика и управление потоком путешествия по Java на Coddy. Урок 58 из 59.

DateTimeFormatter в Java позволяет форматировать даты и время в разных форматах. Его можно использовать с LocalDate, LocalTime и LocalDateTime.

Создай форматтер с определённым шаблоном:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

Отформатируйте дату с помощью форматтера:

LocalDate date = LocalDate.of(2024, 3, 15);
String formatted = date.format(formatter);

После выполнения приведённого выше кода formatted содержит:

2024-03-15

Преобразуйте строку в дату:

String dateStr = "2024-03-15";
LocalDate date = LocalDate.parse(dateStr, formatter);

Оба шага могут завершиться ошибкой. DateTimeFormatter.ofPattern() выбрасывает IllegalArgumentException, если сам шаблон некорректен, например ofPattern("invalid"), поскольку i не является символом шаблона. LocalDate.parse() выбрасывает DateTimeParseException, если текст не соответствует шаблону или не является реальной датой, например "2024-13-45". IllegalArgumentException находится в java.lang, поэтому импортировать его не нужно:

try {
    DateTimeFormatter f = DateTimeFormatter.ofPattern(pattern);
    LocalDate d = LocalDate.parse(text, f);
} catch (DateTimeParseException e) {
    // текст не соответствует шаблону
} catch (IllegalArgumentException e) {
    // шаблон недопустим
}
challenge icon

Задание

Легко

Создай метод с именем formatDate, который принимает три аргумента:

  1. String (dateStr): дата, записанная в шаблоне входных данных
  2. String (inputPattern): шаблон входной даты
  3. String (outputPattern): желаемый шаблон выходных данных

Метод должен:

  1. Разобрать входную дату, используя шаблон входных данных
  2. Отформатировать её, используя шаблон выходных данных
  3. Обрабатывать следующие шаблоны:
    • "basic": "yyyy-MM-dd"
    • "long": "MMMM d, yyyy"
    • "short": "MM/dd/yy"
    • "custom": фактическая строка шаблона

Метод должен возвращать следующие сообщения:

  • Если дата неверна: вернуть "Invalid date format"
  • Если шаблон неверен: вернуть "Invalid pattern"
  • В случае успеха: вернуть отформатированную дату

Попробуйте сами

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

public class Main {
    public static String formatDate(String dateStr, String inputPattern, String outputPattern) {
        // Напишите здесь свой код
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateStr = scanner.nextLine();
        String inputPattern = scanner.nextLine();
        String outputPattern = scanner.nextLine();
        
        System.out.println(formatDate(dateStr, inputPattern, outputPattern));
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Java