SpringBoot集成Spring Data JPA保存和返回时间比北京时间早8小时
环境
springboot: 2.1.4.RELEASE
spring-data-jpa: 2.1.6.RELEASE
mysql-connector-java: 8.0.5
mysql数据库: 5.7
mysql数据库配置
可以通过命令show variables like '%time_zone%';
查看当前mysql时区配置
可以直接通过命令修改时区,set time_zone='+8:00';
,但是下次重启mysql后失效,建议修改mysql配置文件my.ini
在 [mysqld]
配置下面添加配置
[mysqld]
default-time-zone = '+8:00'
配置修改后,重启mysql服务,查看配置是否生效
问题1:保存时间比北京时间早8小时
使用save、saveAndFlush等保存数据是,如果对应的数据库字段是时间类型datetime,会出现保存到库的时间比北京时间早8小时的问题。原因在于数据库连接配置文件spring.datasource.url=jdbc
//localhost:3306/gseem?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
问题1解决
修改时区配置serverTimezone为 Asia/Shanghai
或者 GMT%2b
即可spring.datasource.url=jdbc
//localhost:3306/gseem?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf-8&useSSL=true
问题2:返回到前端的json数据时间字段吧北京时间早8小时
默认情况下,返回的json数据时区是国际标准时区,时间比北京时间早8小时
{
"code": "1",
"msg": "success",
"data": {
"id": 1,
"name": "feiyue",
"password": "123456",
"age": 20,
"sex": 2,
"birthday": "2019-04-27T16:00:00.000+0000",
"createTime": "2019-04-28T07:06:44.000+0000",
"updateTime": "2019-04-30T09:15:32.737+0000",
"status": 1
}
}
问题2解决
修改application.properties
配置文件,添加如下配置
spring.jackson.time-zone=GMT+8
添加后返回结果
{
"code": "1",
"msg": "success",
"data": {
"id": 1,
"name": "feiyue",
"password": "123456",
"age": 20,
"sex": 2,
"birthday": "2019-04-28T00:00:00.000+0800",
"createTime": "2019-04-28T15:06:44.000+0800",
"updateTime": "2019-04-30T17:18:51.080+0800",
"status": 1
}
}
还没有评论,来说两句吧...