在 Java 中,LocalDate
是 java.time
包中的一个类,表示不带时区的日期(年、月、日)。它是 Java 8 引入的 java.time
API 的一部分,用于替代 java.util.Date
和 java.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()); System.out.println("月份值: " + date.getMonthValue()); System.out.println("日: " + date.getDayOfMonth()); System.out.println("星期: " + date.getDayOfWeek()); System.out.println("是否闰年: " + date.isLeapYear());
|
✅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)); System.out.println(date1.isAfter(date2)); System.out.println(date1.equals(date2));
|
✅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()
解析字符串。
- 提供日期计算、比较等操作。
如果你需要时间,可以使用 LocalDateTime
或 ZonedDateTime
。