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'
网友评论