Использование 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().
Задание
ЛегкоСоздай метод с именем processDateTime, который принимает четыре аргумента:
- Строку (
dateTimeStr) в формате "yyyy-MM-dd HH:mm" - Целое число (
amount) для прибавления или вычитания - Строку (
unit): "hours", "days" или "months" - Строку (
operation): "add" или "subtract"
Метод должен:
- Разобрать входную строку даты и времени
- Выполнить указанную операцию
- Вернуть отформатированную информацию о результате
Сообщения, возвращаемые методом:
- Если формат недопустим: вернуть "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));
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах4HashSet Часть 1
Что такое HashSet?Добавление элементаУдаление элементаПроверка наличия элементаПустота и размерОчистка и клонированиеПовторение - HashSet10Даты и время
Основы LocalDateОперации с LocalTimeИспользование LocalDateTimePeriod и DurationФорматирование датРабота с часовыми поясами2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка словПотренируйтесь самостоятельно: Онлайн-компилятор Java