-- 创造无限可能

Java开发技巧:SpringBoot 时间差8小时&时分秒丢失问题

2023-08-15 01:39:46
474 人浏览 0 人点赞
有用,点赞支持一下

问题

使用SpringBoot开发的时候,录入数据里面包含了事件字段,可能会出现这样的问题,直接打开数据表查看事件,会发现数据表中存储的事件会比录入的时间少8个小时,

问题分析

少八个时区很容易想到,我们处于东八区,java存储的时间默认是以0时区为准,默认情况下,会自动转换成0时区的时间

解决办法

方法一:
在实体类中,标注时间的时区timezone

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

该方法必须每个字段都设置,很不方便
方法二
在数据库配置中设置时区

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/数据库名称?serverTimezone=Asia/Shanghai

推荐使用