java中jackson序列化日期需统一为"yyyy-mm-dd hh:mm:ss"格式,应全局配置objectmapper:关闭时间戳、设置simpledateformat(date/calendar)、注册javatimemodule并配置localdatetime等序列化器;spring boot可通过application.yml配置,字段级用@jsonformat需慎用。

Java 中用 Jackson 序列化日期时,默认会输出时间戳(如 1717023600000)或 ISO 格式(如 "2024-05-30T10:20:30.123+08:00"),但多数业务场景需要统一为 "yyyy-MM-dd HH:mm:ss" 这类可读性强的字符串格式。关键在于正确配置 ObjectMapper 的日期处理行为,而非仅靠注解临时覆盖。
全局配置 ObjectMapper 的日期格式
这是最推荐的方式,确保所有 Date、LocalDateTime、ZonedDateTime 等类型都按统一规则序列化和反序列化:
- 创建
ObjectMapper实例后,调用configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)关闭时间戳输出 - 对
java.util.Date和Calendar,用setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")) - 对 Java 8 时间类(
LocalDateTime等),需注册JavaTimeModule并设置其序列化器:
JavaTimeModule module = new JavaTimeModule();
module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
mapper.registerModule(module);
Spring Boot 项目中的自动配置方式
若使用 Spring Boot,可在 application.yml 或 application.properties 中声明 Jackson 全局行为:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
- spring.jackson.serialization.write-dates-as-timestamps=false
- 对 Java 8 时间类型,还需添加依赖
jackson-datatype-jsr310(Spring Boot 2.2+ 默认已包含) - 若需更精细控制(如不同时区处理),仍建议自定义
ObjectMapperBean,覆盖默认配置
字段级控制:@JsonFormat 注解(慎用)
适用于个别字段需特殊格式,但不建议全局依赖:
- 在字段或 getter 方法上加
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - 注意:该注解对
LocalDateTime无效(它无时区概念),只对Date、ZonedDateTime等生效 - 若同时配置了全局
ObjectMapper和@JsonFormat,后者优先级更高,可能造成预期外覆盖
时区与线程安全注意事项
日期格式化涉及时区和 SimpleDateFormat,容易引发隐性问题:
-
SimpleDateFormat不是线程安全的,不能作为单例复用;Jackson 内部会缓存并安全复用,无需手动处理 - 全局
dateFormat设置只影响Date类型;Java 8 时间类必须通过JavaTimeModule单独配置 - 若接口需返回 UTC 时间,可设
timezone = "UTC";国内系统通常设为"GMT+8"或"Asia/Shanghai"
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










