LocalDate 是 Java 8 引入的不可变、线程安全的纯日期类,用于表示年-月-日;通过 now()、of()、parse() 创建,用 getXXX() 获取字段值,plus/minus/with 进行日期计算,isBefore/isAfter 等比较,format 格式化。

LocalDate 是 Java 8 引入的 java.time 包中的核心类,专用于表示“不带时分秒、不带时区”的纯日期(年-月-日)。它不可变、线程安全,是替代旧式 java.util.Date 和 SimpleDateFormat 处理日期的理想选择。
创建 LocalDate 实例
不能用 new 创建,必须通过静态工厂方法:
-
LocalDate.now():获取系统默认时区下的当前日期 -
LocalDate.of(2025, 4, 12):按年、月、日构造(月份用 1–12,不是 0–11) -
LocalDate.parse("2025-04-12"):解析 ISO 格式字符串(yyyy-MM-dd) -
LocalDate.parse("12/04/2025", DateTimeFormatter.ofPattern("dd/MM/yyyy")):自定义格式解析
获取年月日字段值
用 getXXX() 方法直接提取数值,返回 int:
-
date.getYear()→ 返回 2025 -
date.getMonthValue()→ 返回 4(1–12) -
date.getDayOfMonth()→ 返回 12(1–28/29/30/31) -
date.getDayOfWeek()→ 返回DayOfWeek.MONDAY等枚举 -
date.lengthOfMonth()→ 返回当月天数(如 2月返回 28 或 29)
日期计算与调整
所有操作都返回新对象(原对象不变):
-
date.plusDays(7)/date.minusMonths(1):加减时间量 -
date.withYear(2026)/date.withDayOfMonth(1):替换某字段 -
date.with(TemporalAdjusters.firstDayOfNextMonth()):使用预置调节器(需导入java.time.temporal.TemporalAdjusters)
比较与格式化
比较用 isBefore()、isAfter()、isEqual() 或 compareTo();格式化推荐用 DateTimeFormatter:
-
date.isBefore(LocalDate.of(2025, 5, 1))→true -
date.format(DateTimeFormatter.ISO_LOCAL_DATE)→"2025-04-12" -
date.format(DateTimeFormatter.ofPattern("dd MMM yyyy"))→"12 Apr 2025"
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











