Menu
Coddy logo textTech

Основы LocalDate

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

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

Создайте сегодняшнюю дату:

LocalDate today = LocalDate.now();

Создайте конкретную дату:

LocalDate date = LocalDate.of(2024, 3, 15);

После выполнения приведённого выше кода, date содержит: 2024-03-15

Получить различные части даты:

LocalDate date = LocalDate.of(2024, 3, 15);
int year = date.getYear();      // 2024
int month = date.getMonthValue(); // 3
int day = date.getDayOfMonth();   // 15

Разобрать дату из строки:

LocalDate date = LocalDate.parse("2024-03-15");  // Формат: "yyyy-MM-dd"

Важно: Если формат строки неверный, parse() выбрасывает DateTimeParseException. Используйте try-catch для обработки этого:

try {
    LocalDate date = LocalDate.parse("invalid-date");
} catch (DateTimeParseException e) {
    System.out.println("Invalid date format");
}

Добавьте или вычтите дни:

LocalDate date = LocalDate.of(2024, 3, 15);
LocalDate future = date.plusDays(10);    // 2024-03-25
LocalDate past = date.minusDays(5);      // 2024-03-10

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

  • future: 2024-03-25
  • past: 2024-03-10
challenge icon

Задание

Легко

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

  1. Строку (dateStr) в формате "yyyy-MM-dd"
  2. Целое число (days) для добавления или вычитания
  3. Строку (operation) — либо "add", либо "subtract"

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

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

Сообщения возврата должны быть:

  • Если неверный формат даты: вернуть "Invalid date format"
  • Если неверная операция: вернуть "Invalid operation"
  • При успехе: вернуть "Original: [date], New: [new_date], Day of week: [day_name]"

Шпаргалка

LocalDate представляет дату без времени или часового пояса в Java.

Создайте сегодняшнюю дату:

LocalDate today = LocalDate.now();

Создайте конкретную дату:

LocalDate date = LocalDate.of(2024, 3, 15);

Получите различные части даты:

LocalDate date = LocalDate.of(2024, 3, 15);
int year = date.getYear();      // 2024
int month = date.getMonthValue(); // 3
int day = date.getDayOfMonth();   // 15
String dayOfWeek = date.getDayOfWeek().toString();  // "FRIDAY"

Разберите дату из строки:

LocalDate date = LocalDate.parse("2024-03-15");  // Формат: "yyyy-MM-dd"

Добавьте или вычтите дни:

LocalDate date = LocalDate.of(2024, 3, 15);
LocalDate future = date.plusDays(10);    // 2024-03-25
LocalDate past = date.minusDays(5);      // 2024-03-10

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

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

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

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

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