日期格式化接收和格式化接收

📅 2026/7/10 1:39:24 👁️ 阅读次数 📝 编程学习
日期格式化接收和格式化接收

SpringBoot 日期接收输出格式化全套 4 种方法(最全总结,记下来够用整个开发生涯)

分两大场景:

  1. 接收前端日期字符串 → 转 Java Date/LocalDateTime(入参)
  2. 后端 Java 日期对象 → 返给前端标准字符串(出参)

先统一说明

现在开发推荐用:JDK8 新时间类LocalDateLocalTimeLocalDateTime不再用老旧DateCalendar


一、方式 1:字段单独注解(局部生效)

1)格式化输出(返前端不带 T)

import com.fasterxml.jackson.annotation.JsonFormat; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime;

作用:后端转 JSON 输出时,按指定格式,带时区,去掉中间 T。

2)接收前端日期(普通 JSON 入参)

同样@JsonFormat也能同时负责接收 + 输出前端传2026-05-08 12:30:00能自动解析成 LocalDateTime。

3)表单 / URL 参数接收(非 JSON)

用:@DateTimeFormat

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime beginTime;

区别:

  • @JsonFormatJSON 传参
  • @DateTimeFormat普通表单、url 拼接参数

二、方式 2:全局配置 application.yml(最简单、企业常用)

不用每个字段加注解,全局统一格式化

spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8

生效范围

  • 所有LocalDateTime/Date
  • 输出自动格式化
  • JSON 入参也能自动接收

优点:省事缺点:只能一种全局格式,不能个别字段特殊格式


三、方式 3:自定义 Jackson 全局配置类(最专业、推荐)

写一个配置类,全局统一序列化、反序列化规则可以统一指定:

  • 日期格式
  • 空值处理
  • 时区
  • 全局去掉 T
@Configuration public class JacksonConfig { private static final String PATTERN = "yyyy-MM-dd HH:mm:ss"; @Bean public ObjectMapper objectMapper() { ObjectMapper mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); // 序列化:LocalDateTime → 字符串 module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(PATTERN))); // 反序列化:字符串 → LocalDateTime module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(PATTERN))); mapper.registerModule(module); // 设置时区 mapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); return mapper; } }

最强方案:一次配置,全局所有日期自动格式化,不用加任何注解。


四、方式 4:手动工具类转换(灵活自定义)

什么时候用?接口里个别字段要特殊格式,跟全局不一样时。

// 日期转字符串 DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timeStr = LocalDateTime.now().format(fmt); // 字符串转日期 LocalDateTime time = LocalDateTime.parse("2026-05-08 10:00:00", fmt);

缺点:要自己手动写代码,不优雅;优点:格式随心所欲。


五、四种方式对比总结(直接背)

表格

方式作用范围接收日期输出日期适用场景
@JsonFormat单个字段✅ 支持✅ 支持个别字段特殊格式
@DateTimeFormat单个字段✅ 表单 / URL 参数❌ 不控制输出普通表单提交
yml 全局配置全局所有✅ 支持✅ 支持小项目、格式统一
Jackson 配置类全局所有✅ 支持✅ 支持企业项目、规范统一
工具类手动格式化代码手动✅ 自己处理✅ 自己处理特殊定制格式