springboot项目时间不一致解决方案

一、springboot项目时间不一致解决方案

1.第一种原因:数据库查到的时间和实际时间不一致。
解决方案:配置数据源时,设置时区。

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/accesscontrolmanager?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=UTF8
    username: root
    password: root

2.第二种原因:数据库查询到的时间是正确的,但是在前端页面展示的时候少了8个小时。
为什么会出现这种情况?
由于我们使用的是SpringBoot框架,SpringBoot中对于@RestController或者@Controller+@ResponseBody注解的接口方法的返回值默认是Json格式,所以对于data类型的数据,在返回浏览器段被SpringBoot默认的JackJson框架转换,而JackSon框架默认的时区是GMT,相对于中国少了8个小时。
第一种解决方案:
在yml中配置如下即可:

spring:
	jackson:
		time-zone: GMT+8

第二种解决方案:
在实体类加入以下注解:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date addTime;

第三种解决方案:
在yml中加入以下代码

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/accesscontrolmanager?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=UTF8&useJDBCCompliantTimezoneShift=true
    username: root
    password: root

你可能感兴趣的:(SpringBoot,java)