Menu
CoddyTech

Использование LocalDateTime

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

LocalDateTime в Java объединяет дату и время. Это полезно, когда нужно работать с обоими компонентами, например с расписаниями событий или временными метками.

Создать текущую дату и время

LocalDateTime now = LocalDateTime.now();

Создайте конкретную дату и время:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
// 2024-03-15 14:30

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

2024-03-15T14:30

Отформатируйте дату и время:

LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
String formatted = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));

Разберите дату и время из String с тем же шаблоном:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime parsed = LocalDateTime.parse("2024-03-15 14:30", formatter);  // 2024-03-15T14:30

Без форматтера LocalDateTime.parse() принимает только формат ISO 2024-03-15T14:30. Строка, не соответствующая шаблону, вызывает исключение DateTimeParseException, поэтому оберни вызов в try-catch, как ты делал с LocalDate.parse().

challenge icon

Задание

Легко

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

  1. Строку (dateTimeStr) в формате "yyyy-MM-dd HH:mm"
  2. Целое число (amount) для прибавления или вычитания
  3. Строку (unit): "hours", "days" или "months"
  4. Строку (operation): "add" или "subtract"

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

  1. Разобрать входную строку даты и времени
  2. Выполнить указанную операцию
  3. Вернуть отформатированную информацию о результате

Сообщения, возвращаемые методом:

  • Если формат недопустим: вернуть "Invalid date time format"
  • Если единица измерения недопустима: вернуть "Invalid unit"
  • Если операция недопустима: вернуть "Invalid operation"
  • В случае успеха: вернуть "Original: [datetime], New: [new_datetime], Day: [day_name]", указав обе даты и время в формате yyyy-MM-dd HH:mm, а [day_name] — день недели для новой даты и времени, записанный заглавными буквами (например, FRIDAY)

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

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

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

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

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

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