掌握 localdatetime 格式化需用线程安全的 datetimeformatter:内置常量如 iso_local_date_time,自定义用 ofpattern("yyyy-mm-dd hh:mm:ss");注意 yyyy/mm/dd/hh/mm/ss 大小写含义不同,格式化与解析须用同一 pattern。

掌握 LocalDateTime 的格式化输出,关键在于理解 DateTimeFormatter 的用法和 Pattern 字符的含义。它不依赖外部库,是 Java 8+ 原生、线程安全、语义清晰的方案。
用对 DateTimeFormatter 类
别再用过时且非线程安全的 SimpleDateFormat。LocalDateTime 必须配合 DateTimeFormatter 使用:
- 内置常量可快速上手,比如 DateTimeFormatter.ISO_LOCAL_DATE_TIME 输出
2026-04-15T10:04:22 - 自定义格式统一走 DateTimeFormatter.ofPattern("xxx"),例如
"yyyy-MM-dd HH:mm:ss" - 格式器建议声明为
static final,避免重复创建,提升性能
记牢常用 Pattern 字符含义
大小写敏感,不能写错。几个最易混淆的点:
-
yyyy:四位年份(2026),不是
YYYY(那是“周所属年”,语义不同) -
MM:两位月份(04),不是
mm(那是分钟) -
dd:当月第几天(15),不是
DD(那是当年第几天) - HH:24 小时制小时(10),hh 是 12 小时制(需配 a 才显 AM/PM)
- mm:分钟,ss:秒,SSS:毫秒(三位)
按场景选典型 Pattern 示例
不用死记硬背,按输出需求直接套用:
- 标准日志时间:
"yyyy-MM-dd HH:mm:ss"→ 2026-04-15 10:04:22 - 中文展示:
"yyyy年MM月dd日 HH时mm分"→ 2026年04月15日 10时04分 - 文件名友好:
"yyyyMMdd_HHmmss"→ 20260415_100422 - 仅日期或仅时间:
"yyyy-MM-dd"或"HH:mm:ss" - 带 T 分隔符(兼容 ISO):
"yyyy-MM-dd'T'HH:mm:ss"
注意解析时也要用同一格式器
格式化是 to String,解析是 from String,二者必须用同一个 Pattern:
- 格式化:
localDateTime.format(formatter) - 解析:
LocalDateTime.parse("2026-04-15 10:04:22", formatter) - 如果解析字符串含毫秒或时区,Pattern 和输入必须严格匹配,否则抛 DateTimeParseException











