localdatetime 是 java 8 引入的不可变日期时间类,表示不带时区的本地日期和时间,适用于日程安排等场景;可通过 now()、of()、attime()、parse() 创建,支持 plus/minus/with/truncatedto 等不可变操作,并可提取字段或格式化输出。

LocalDateTime 是 Java 8 引入的不可变日期时间类,用于表示“不带时区的本地日期和时间”,比如 2024-06-15T14:30:45.123。它不包含时区信息,也不代表一个具体的时间点(不像 ZonedDateTime 或 Instant),因此适合处理日程安排、表单输入、数据库中无时区字段等场景。
创建 LocalDateTime 实例
常用方式包括:
- 用当前系统日期时间:
LocalDateTime.now() - 指定年月日时分秒:
LocalDateTime.of(2024, 6, 15, 14, 30, 45)或LocalDateTime.of(2024, Month.JUNE, 15, 14, 30) - 从 LocalDate 和 LocalTime 组合:
localDate.atTime(localTime)或localTime.atDate(localDate) - 解析字符串(需符合 ISO 格式或自定义格式):
LocalDateTime.parse("2024-06-15T14:30:45"),或用DateTimeFormatter解析非标准格式,例如:DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");<br>LocalDateTime.parse("2024/06/15 14:30", formatter);
修改与计算时间
LocalDateTime 是不可变的,所有“修改”操作都返回新对象:
- 加减时间单位:
plusDays(1)、minusHours(2)、plusSeconds(30) - 调整特定字段:
withYear(2025)、withMonth(12)、withHour(9) - 截断到指定精度:
truncatedTo(ChronoUnit.HOURS)(如把14:30:45变成14:00)
提取日期或时间部分
方便拆解使用:
- 获取日期部分:
localDateTime.toLocalDate() - 获取时间部分:
localDateTime.toLocalTime() - 单独取值:
localDateTime.getYear()、localDateTime.getDayOfWeek()、localDateTime.getHour()等
格式化与解析字符串
默认 toString() 输出 ISO 格式(yyyy-MM-ddTHH:mm:ss.SSS)。自定义格式需用 DateTimeFormatter:
- 预定义格式器:
DateTimeFormatter.ISO_LOCAL_DATE_TIME、DateTimeFormatter.BASIC_ISO_DATE - 自定义模式:
DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss") - 格式化示例:
LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM-dd HH:mm"));→"06-15 14:30"
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











