在 Java 中,LocalDatejava.time 包中的一个类,表示不带时区的日期(年、月、日)。它是 Java 8 引入的 java.time API 的一部分,用于替代 java.util.Datejava.util.Calendar


✅1. 创建 LocalDate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.time.LocalDate;

public class Main {
public static void main(String[] args) {
// 获取当前日期
LocalDate today = LocalDate.now();
System.out.println("今天的日期: " + today);

// 指定日期 (年, 月, 日)
LocalDate date = LocalDate.of(2025, 3, 28);
System.out.println("指定日期: " + date);

// 解析字符串
LocalDate parsedDate = LocalDate.parse("2025-03-28");
System.out.println("解析的日期: " + parsedDate);
}
}

✅2. 获取日期信息

1
2
3
4
5
6
7
LocalDate date = LocalDate.of(2025, 3, 28);
System.out.println("年份: " + date.getYear());
System.out.println("月份: " + date.getMonth()); // MARCH
System.out.println("月份值: " + date.getMonthValue()); // 3
System.out.println("日: " + date.getDayOfMonth());
System.out.println("星期: " + date.getDayOfWeek()); // FRIDAY
System.out.println("是否闰年: " + date.isLeapYear()); // false

✅3. 日期计算

1
2
3
4
5
6
7
8
9
10
11
12
13
LocalDate date = LocalDate.of(2025, 3, 28);

// 加/减天数、月数、年数
LocalDate plusDays = date.plusDays(5);
LocalDate minusMonths = date.minusMonths(2);

System.out.println("加5天: " + plusDays);
System.out.println("减2个月: " + minusMonths);

// 计算两个日期之间的天数
LocalDate anotherDate = LocalDate.of(2025, 4, 10);
long daysBetween = java.time.temporal.ChronoUnit.DAYS.between(date, anotherDate);
System.out.println("两日期相差天数: " + daysBetween);

✅4. 日期比较

1
2
3
4
5
6
LocalDate date1 = LocalDate.of(2025, 3, 28);
LocalDate date2 = LocalDate.of(2025, 4, 10);

System.out.println(date1.isBefore(date2)); // true
System.out.println(date1.isAfter(date2)); // false
System.out.println(date1.equals(date2)); // false

✅5. 获取本月第一天和最后一天

1
2
3
4
5
6
LocalDate today = LocalDate.now();
LocalDate firstDay = today.withDayOfMonth(1);
LocalDate lastDay = today.withDayOfMonth(today.lengthOfMonth());

System.out.println("本月第一天: " + firstDay);
System.out.println("本月最后一天: " + lastDay);

✅总结

  • LocalDate 不包含时间,只表示日期(年月日)。
  • 不可变对象,所有修改都会返回一个新实例。
  • 使用 now() 获取当前日期,of() 创建指定日期,parse() 解析字符串。
  • 提供日期计算、比较等操作。

如果你需要时间,可以使用 LocalDateTimeZonedDateTime