springboot2.0mysql时间相差8小时异常解决
1. mysql Url链接: serverTimezone=Asia/Shanghai
spring: # 配置mysql数据库
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=UTF-8&useTimezone=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
username: root
password: 123456
2. 响应bean @S
第一种, 全局设置
spring: #时间响应格式体
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Shanghai
第二种,类注解设置
import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai" ) private Date startTime;
@JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "Asia/Shanghai" )
private Date endTime;
综合原因
时区的不同,从而导致Mysql数据库中datetime类型的值查询后转到Java Bean,值多了8个小时。
发现是JVM的默认时区为:Asia/Shanghai,
其中: GMT+08这个时区;
是2种定义标准。Asia/Shanghai 这个代表的是中国的时区,在历史中,有国家政策颁布了在1986-1991年等还存在夏令时,在这样的时间区间,我国夏季时,会将时间拨快1个小时(即东9区时间)。
更多服务器操作系统时区时间,请参考: https://blog.csdn.net/weixin_33736649/article/details/91964164
以上是 springboot2.0mysql时间相差8小时异常解决 的全部内容, 来源链接: utcz.com/z/511334.html