【spring boot】数据库存储的时间 和 接口返回给前

2021-04-09  本文已影响0人  wyn_做自己

mysql5.7版本,当数据库时间类型字段设置为 timeStamp 或者 datetime 均有可能出现这个问题。

一、解决方法:

1、设置spring配置文件:

spring.datasource.url=jdbc:mysql://10.1.1.1111:3306/database?characterEncoding=utf-8&serverTimezone=GMT%2B8

数据库配置后面加上&serverTimezone=GMT%2B8

2、spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

     spring.jackson.time-zone=GMT+8

第一步为设置数据库时间为东八区(北京)时间,保证debug时候从数据库查出时间一致。第二步为返回给前端的时间格式和时区设定,保证前端页面显示时间和数据库一致。

二、问:为什么要增加  spring.jackson.time-zone  这个配置呢?

原因:

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

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

三、另附上如何从mysql配置上修改为北京时区.

在目录C:\ProgramData\MySQL\MySQL Server 5.7下找到my.ini文件

在[mysqld]下添加

default-time-zone=timezone

default-time-zone = '+8:00'

上一篇下一篇

猜你喜欢

热点阅读