Menu
CoddyTech

LocalDate 基础

本课属于 Coddy Java 学习旅程的“逻辑与流程”单元。第 54 课,共 59 课。

Java 中的 LocalDate 表示不包含时间或时区的日期。它用于处理生日、节假日或日程等日期。

创建今天的日期:

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
String dayOfWeek = date.getDayOfWeek().toString();  // "FRIDAY"

从字符串解析日期:

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. 一个格式为 "yyyy-MM-dd" 的字符串(dateStr)
  2. 一个用于增加或减少天数的整数(days)
  3. 一个值为 "add" 或 "subtract" 的字符串(operation)

该方法应:

  1. 解析输入的日期字符串
  2. 增加或减少指定的天数
  3. 返回格式化后的结果信息

返回的消息应为:

  • 如果日期格式无效:返回 "Invalid date format"
  • 如果操作无效:返回 "Invalid operation"
  • 成功时:返回 "Original: [date], New: [new_date], Day of week: [day_name]",其中 [day_name] 是新日期对应的星期几,使用大写字母表示(例如 WEDNESDAY)

亲手试试

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自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Java 在线编译器