解决时区差异:前端时间显示问题的技术要点与解决方案
解决方法:
指定 JSON 序列化后的时区
如果不指定时区,默认会少8小时。
spring:
jackson:
time-zone: GMT+8
问题:
在前端执行添加保存后,后端接口调用执行插入数据库。直接去数据库中查询是正确的,所以前端也没有问题。然后就卡住了,直接就是一手询问。
发现 JSON 序列化时间时会丢掉 TIME-ZONE,需要手动在 XML 中指定或者在实体类的时间字段上添加对应注解。
图中数据库的时间是正确的,但前端的时间需要减去8小时。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
误区:
疯狂修改数据库时区信息,然后数据库服务无限重启。
只需要查询时区指定是否为 system 或者 shanghai。
SELECT @@global.time_zone;
SELECT @@session.time_zone;
结果是 SYSTEM