LocalDateTime是Java 8引入的不可变、线程安全的无时区日期时间类,表示本地年月日时分秒纳秒;支持now()、of()、parse()创建,plus/minus/with调整,DateTimeFormatter格式化与解析。

LocalDateTime 是 Java 8 引入的新日期时间 API(java.time 包)中的核心类之一,专门用于表示**不带时区的本地日期和时间**,即年、月、日、时、分、秒(甚至纳秒),比如 2025-04-05T14:30:45.123。它不包含时区或偏移量信息,适合处理“系统本地时间”或业务逻辑中与具体时区无关的时间点(如会议安排、数据库存储无时区字段等)。
创建 LocalDateTime 实例
有多种常用方式获取 LocalDateTime 对象:
- 获取当前系统默认时区的本地时间:
LocalDateTime.now() - 指定年月日时分秒创建:
LocalDateTime.of(2025, 4, 5, 14, 30, 45)或LocalDateTime.of(2025, Month.APRIL, 5, 14, 30, 45, 123_000_000) - 从 LocalDate 和 LocalTime 组合:
LocalDateTime.of(LocalDate.now(), LocalTime.now()) - 解析字符串(需符合 ISO_LOCAL_DATE_TIME 格式,如
"2025-04-05T14:30:45"):LocalDateTime.parse("2025-04-05T14:30:45");自定义格式用DateTimeFormatter,例如:LocalDateTime.parse("2025/04/05 14:30:45", DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))
提取年月日时分秒字段
LocalDateTime 提供了直接获取各时间单位的方法,返回对应基本类型:
-
getYear()→ int(如 2025) -
getMonthValue()→ int(1~12);getMonth()→ Month 枚举(如 Month.APRIL) -
getDayOfMonth()→ int(1~31) -
getHour()→ int(0~23) -
getMinute()→ int(0~59) -
getSecond()→ int(0~59) -
getNano()→ int(0~999_999_999)
注意:没有 getDayOfYear() 或 getWeekOfYear() 等方法——这些属于 LocalDate 或需配合 TemporalAdjusters 使用。
修改时间(不可变对象,返回新实例)
LocalDateTime 是不可变的,所有“修改”操作都返回一个新的 LocalDateTime 实例:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
- 加减时间单位:
plusDays(1)、minusHours(2)、plusSeconds(30) - 调整特定字段:
withYear(2026)、withMonth(12)、withHour(9)、withMinute(0) - 重置为某时刻:
with(LocalTime.NOON)、with(TemporalAdjusters.firstDayOfNextMonth())
例如:localDateTime.withYear(2024).withHour(0).withMinute(0).withSecond(0).withNano(0) 可快速归零到当天 00:00:00.000。
格式化与解析(按需定制)
输出为字符串推荐使用 DateTimeFormatter,避免依赖默认 toString():
- 预定义格式器:
localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)→"2025-04-05T14:30:45.123" - 中文友好格式:
localDateTime.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"))→"2025年04月05日 14:30:45" - 解析同理,必须确保模式与字符串严格匹配,否则抛
DateTimeParseException
注意:不要用 SimpleDateFormat,它是旧 API,线程不安全且设计过时。
LocalDateTime 覆盖了绝大多数“仅需年月日时分秒”的场景,关键记住它不含时区、不可变、线程安全。需要时区支持(如北京时间 vs 伦敦时间)请转向 ZonedDateTime 或 OffsetDateTime。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










