欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot 8小时问题

程序员文章站 2022-07-10 23:31:08
...

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

自从使用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或者@[email protected]注解的接口方法的返回值默认是Json格式,

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

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

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