mysql

时区 mysql字段类型为datatime时,java使用时间戳Timestamp(使用IDEA自带的pojo生成工具生成时的结果),时间戳也就是UTC,从1970年01月01日 0:00:00)开始计算秒数,使用java中的new Timestamp(System.currentTimeMillis())为属性赋值插入到数据库后会少8个小时,因为我们所在的时区对UTC来说是多8个小时的,所以存的时候会少8小时

解决办法:

springboot 2.1.6.RELEASE 修改mysql的连接配置

# serverTimezone=GMT%2b8 : mysql默认时区是UTC,修改serverTimezone意为告诉mysql服务器我使用的是哪个时区,这样存时间就会按照本地时区存储
# 只配置了这个代表着从java存储到mysql数据库时可以存储对当前系统时区来说的正常的时间,但是获取时还是会少8小时,并且还需格式化显示 ,在javabean的属性上添加注解     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8"),pattern:格式化 timezone:时区,在将数据库中的数据映射到javabean上时按照指定的时区赋值

url: jdbc:mysql://127.0.0.1:3306/ols_gaosan?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true

java获取当前系统时区

ZoneId aDefault = TimeZone.getDefault().toZoneId();
System.out.println(aDefault);
// Asia/Shanghai(也可将上面连接的时区配置改为这个)
Copyright © TaoQZ 2019 all right reserved,powered by Gitbook作者联系方式:taoqingzhou@gmail.com 修订时间: 2024-11-19 17:25:44

results matching ""

    No results matching ""

    results matching ""

      No results matching ""