1 问题
一个请求,返回一个对象,对象里面有日期,返回的对象的日期却比实际的日期少了一天
如下图:在return返回的时候查看返回的对象的日期的值
postman返回的结果如下图,几个日期都少了一天
2 产生原因
spring-boot默认使用Jackson对返回到前端的值进行序列化。Jackson框架默认的时区是UTC(协调世界时,又称统一世界时间),相比于东八区少了8小时(东+西-)。hh:12小时制,HH:24小时制。
3 解决方案
1) 使用@JsonFormat注解(推荐)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd hh:mm:ss")
private Date begindate;
2) 在application.yml中使用如下配置
spring:
jackson:
date-format: yyyy-MM-dd hh:mm:ss
time-zone: GMT+8
或者在 bootstrap.properties 中配置
3) 数据库链接db添加参数
serverTimezone=Asia/Shanghai
注解虽然相对于配置文件比较麻烦,要写很多次,不过可以针对不同的字段的不同需求,进行单独配置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?