1.场景:
本人是在 springboot 项目中从数据库获取时间传到前端进行展示,所以在实体类上使用注解 @JsonFormat 进行格式转换。最后发现时间少了一天,最后锁定是 时区 的问题。
@JsonFormat 默认是标准时区的时间,会出现少8小时的情况。使用时,加上时区 timezone="GMT+8"
2.解决方案:
在实体类需要时间转换的字段上加上下面其中任意一个就可以了
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
如果还是解决不了的话,可以试试在 数据库连接url 里面的
serverTimezone 设置为 Asia/Shanghai
jdbc:mysql://x.x.x.x:3306/xxx?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=UTF-8