news 2026/5/9 2:13:31

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

作者头像

张小明

前端开发工程师

1.2k 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 配置类全局所有✅ 支持✅ 支持企业项目、规范统一
工具类手动格式化代码手动✅ 自己处理✅ 自己处理特殊定制格式
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 2:11:31

储能仿真系统-需求和设计

储能仿真系统-需求和设计写在前面1. 需求来源:我们要解决什么问题1.1 仿真范围(端到端)1.2 可扩展与可配置1.3 联调友好2. 总体架构:三层分工2.1 模拟层(EssDeviceSimModel/)2.2 接口与数据服务层2.3 展示与…

作者头像 李华
网站建设 2026/5/9 2:07:56

三星全线退出中国家电市场:真被国货打跑?还是战略大转移?

一、三星真的被国货「打跑」了?近期三星官宣全线停止在中国大陆销售电视、冰箱、洗衣机等全品类家电,消息一出立刻引发热议。不少人高呼「解气」,认为这是国产家电崛起的标志性事件 —— 外资巨头终于被中国品牌打跑了。但事实真的是「兵败撤…

作者头像 李华
网站建设 2026/5/9 2:07:55

从iPhone备份提取Apple Watch健康数据的开源工具WatchClaw详解

1. 项目概述:一个能“抓取”Apple Watch数据的开源利器如果你是一名iOS或watchOS开发者,或者对可穿戴设备的数据分析感兴趣,那你很可能遇到过这样的困境:想深入研究Apple Watch采集到的那些丰富数据——心率、步数、活动能量、睡眠…

作者头像 李华
网站建设 2026/5/9 1:55:07

ARM scatter文件详解:内存布局控制与工程实践

1. ARM scatter文件基础概念与语法结构在嵌入式系统开发中,内存布局的控制是确保系统稳定运行的关键环节。ARM scatter文件(分散加载描述文件)作为链接器脚本的一种实现,其核心作用在于精确控制代码和数据在内存中的物理分布。与传…

作者头像 李华
网站建设 2026/5/9 1:53:45

MoE-LLM性能瓶颈分析与优化实践

1. MoE-LLM性能瓶颈的本质特征现代大型语言模型(LLM)的推理过程本质上是在内存带宽和计算资源之间寻找平衡的艺术。通过对OLMo-2系列模型(1B/7B/13B/32B)的剖面分析,我们发现了一个关键现象:在标准解码器层中,Attention模块消耗了68-72%的推理…

作者头像 李华