springboot 8小时问题

本文是作者关于Spring Boot日期时间存储显示问题的经验总结。探讨了项目部署在世界时和北京的服务器上,配置文件写入或未写入GMT+8时,前端提交post请求、后端接收请求、数据存储及显示过程中日期时间的变化情况,指出Jackson框架默认时区影响,给出配置建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章纯属自己经验总结,如有误导,请多包涵。

自从使用springboot 很少注意时间存储显示的问题 这次碰到了 弄了好久。。。终于有点眉目

1 当 项目部署在世界时的服务器上,配置文件中写入

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

当前端提交post请求,后端用@RequestBody接收请求,此时 日期型字符串转换成Date型数据时 会少8个小时  存储到后端数据库后 再通过查询显示到前端时 将Date类型数据转换成日期字符串后  时间多了8小时

 

2 当 项目部署在世界时的服务器上,配置文件中未写入GMT+8

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

当前端提交post请求,后端用@RequestBody接收请求,此时 日期型字符串转换成Date型数据时 时间正常  存储到后端数据库后 再通过查询显示到前端时 将Date类型数据转换成日期字符串后  时间正常

3 当 项目部署在北京时的服务器上,配置文件中写入

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

当前端提交post请求,后端用@RequestBody接收请求,此时 日期型字符串转换成Date型数据时 时间正常 存储到后端数据库后 再通过查询显示到前端时 将Date类型数据转换成日期字符串后  时间正常

2 当 项目部署在北京时的服务器上,配置文件中未写入 GMT+8

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

当前端提交post请求,后端用@RequestBody接收请求,此时 日期型字符串转换成Date型数据时 会少8个小时  存储到后端数据库后 再通过查询显示到前端时 将Date类型数据转换成日期字符串后  时间多了8小时

 

总结:

spring-boot中对于@RestController或者@Controller+@ResponseBody注解的接口方法的返回值默认是Json格式,

所以当对于date类型的数据,在返回浏览器端是会被spring-boot默认的Jackson框架转换,而Jackson框架默认的时区GMT(相对于中国是少了8小时)。

若项目部署再世界时的服务器上 配置文件中不用加GMT+8

若项目部署再北京时的服务器上 配置文件中用加GMT+8


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值