datetimeformatter的format()方法可将localdatetime按指定模式转字符串;支持预定义格式器(如iso_local_date_time)和自定义ofpattern()模式,需注意大小写敏感、null安全及时区无关性。

用 DateTimeFormatter 的 format() 方法,可以将 LocalDateTime 对象按指定模式转成字符串。
使用预定义格式器(最简单)
Java 提供了几个常用静态格式器,适合标准场景:
-
DateTimeFormatter.ISO_LOCAL_DATE_TIME→"2024-05-20T14:30:45" -
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")→"2024-05-20 14:30:45" -
DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm")→"20/05/2024 14:30"
自定义日期时间模式(最常用)
用 ofPattern() 搭配字母模式符,灵活控制输出:
-
y年(yy→两位,yyyy→四位) -
M月(M→数字,MM→补零,MMM→缩写如"May") -
d日、H时(24小时制)、m分、s秒,补零都用双字母 - 空格、冒号、横线等普通字符直接写在模式串里
示例:LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm")) → "2024年05月20日 14:30"
注意时区无关性
LocalDateTime 本身不含时区信息,所以 format() 不涉及时区转换。如果需要带时区的字符串(如含 Z 或 +08:00),得先转成 ZonedDateTime 或 OffsetDateTime 再格式化。
避免常见错误
以下写法会抛异常或结果不对:
- 误用
SimpleDateFormat(已过时,且线程不安全) - 模式串中字母大小写写错(如把
MM写成mm就变成分钟了) - 对
null的LocalDateTime调用format()→ 抛NullPointerException - 用
DateTimeFormatter.BASIC_ISO_DATE格式化LocalDateTime→ 类型不匹配,抛DateTimeException
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











