Java中DateTimeFormatter格式化日期时间需先有LocalDateTime等对象,再调用format();可用ISO预定义常量或ofPattern自定义模式,注意类型与时区匹配,且推荐static final复用线程安全的格式器。

Java 中使用 DateTimeFormatter 格式化日期时间字符串,核心是:先有日期时间对象(如 LocalDateTime、ZonedDateTime),再用预定义或自定义的格式器调用 format() 方法转为字符串。
用内置常量快速格式化
Java 提供了多个常用预定义格式器,适合标准场景,无需手写模式:
-
DateTimeFormatter.ISO_LOCAL_DATE→ "2024-05-20" -
DateTimeFormatter.ISO_LOCAL_TIME→ "14:35:22" -
DateTimeFormatter.ISO_LOCAL_DATE_TIME→ "2024-05-20T14:35:22" -
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")→ "2024-05-20 14:35:22"
用 ofPattern() 自定义格式
通过模式字符串灵活控制输出样式。常见符号含义:
- yyyy:4位年份;yy:2位年份
- MM:两位月份(01–12);MMM:英文缩写(Jan);MMMM:全称(January)
- dd:日(01–31);HH:24小时制小时(00–23);mm:分钟;ss:秒
- SSS:毫秒(000–999);xxx:时区偏移(如 +08:00)
示例:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
立即学习“Java免费学习笔记(深入)”;
LocalDateTime now = LocalDateTime.now();
String s = now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"));
// 输出:2024年05月20日 14:35:22
注意时区与类型匹配
格式器必须和日期时间类型兼容:
-
LocalDateTime不含时区 → 别用带z、Z、xxx的模式,否则抛DateTimeException - 要显示时区,改用
ZonedDateTime或OffsetDateTime:
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
String s = zdt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS XXX z"));
// 输出:2024-05-20 14:35:22.123 +08:00 CST
线程安全 & 复用建议
DateTimeFormatter 是不可变且线程安全的,推荐声明为 static final 复用,避免重复创建:
public class DateUtils {
public static final DateTimeFormatter CHINESE_DATETIME =
DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
public static String formatNow() {
return LocalDateTime.now().format(CHINESE_DATETIME);
}
}

















