LocalDate和LocalTime是Java 8引入的不带时区的日期时间类,分别表示年-月-日和时:分:秒,如LocalDate.now()获取当前日期,LocalTime.of(14,30)创建指定时间,二者均不可变且线程安全,常用操作包括plus/minus系列方法及字段提取,结合使用可构建LocalDateTime。

Java 8 引入了新的日期时间 API,位于 java.time 包中,其中 LocalDate 和 LocalTime 是两个常用类,分别用于表示不带时区的日期和时间。它们是不可变的、线程安全的对象,使用起来简单直观。
LocalDate:处理日期
LocalDate 表示一个年-月-日的日期,比如 2025-04-05,不包含时间和时区信息。
获取当前日期:-
LocalDate now = LocalDate.now();// 获取系统默认时区的当前日期
-
LocalDate date = LocalDate.of(2025, 4, 5);// 年、月、日 - 也可以使用
Month枚举:LocalDate.of(2025, Month.APRIL, 5)
-
date.plusDays(3)// 增加3天,返回新对象 -
date.minusMonths(1)// 减少1个月 -
date.getYear()、date.getMonth()、date.getDayOfMonth()// 获取字段值 -
date.getDayOfWeek()// 返回星期几(如 MONDAY) -
date.isLeapYear()// 判断是否为闰年
LocalTime:处理时间
LocalTime 表示一个时间,如 13:45:30,不包含日期和时区。
获取当前时间:-
LocalTime now = LocalTime.now();// 系统当前时间
-
LocalTime time = LocalTime.of(14, 30);// 14:30 -
LocalTime.of(14, 30, 45)// 14:30:45 -
LocalTime.of(14, 30, 45, 100_000_000)// 包含纳秒
-
time.plusHours(2)// 增加2小时 -
time.minusMinutes(15)// 减去15分钟 -
time.getHour()、time.getMinute()、time.getSecond()// 获取时间字段 -
time.withSecond(0)// 设置秒为0,返回新实例
结合使用 LocalDate 和 LocalTime
如果需要同时处理日期和时间,可以使用 LocalDateTime,它是前两者的组合。
立即学习“Java免费学习笔记(深入)”;
LocalDateTime dateTime = LocalDateTime.of(date, time);-
LocalDateTime.now()// 直接获取当前日期时间 - 也可以从
LocalDate或LocalTime扩展:date.atTime(10, 30)或time.atDate(date)
基本上就这些。LocalDate 和 LocalTime 设计简洁,适合大多数不需要时区的场景,比如记录生日、营业时间等。操作都返回新对象,不会修改原值,使用时注意接收返回值。










