问题
使用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
推荐使用