zoukankan      html  css  js  c++  java
  • 2021年12月9日复盘 前端日期少8小时

    今天又遇到项目中的日期差了8个小时

    从A项目看没问题,数据源是从B项目获取的。

    查看了B项目,mysql的url加了GMT+8这个配置

    serverTimezone=GMT%2B8

    断点调用,肉眼看也没啥问题

    返回给前端的,肉眼看有问题。。。。

    那么问题推测应该是在Bean To Json上面了

    我们把断点断到获取这个属性的get方法上,最终调用到了com.fasterxml.jackson.databind.ser.BeanPropertyWriter

    再看获取到的日期序列化器

     发现最终调用的是一个自定义的SimpleDateFormat.

    于是乎,跑去看看我的实体类。

    哦吼,有个格式化的注解

    然后在调试界面上试了下

     原值是有时区的,结果序列化之后,自动扣掉这个时区,8小时了。

    按照这个思路

    1、从数据库读出来的数据是正确的

    2、解析到前端的时候扣掉了8小时

    我们先尝试在日期格式序列化器中增加时区

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

    发现正常。

    但是这样的话,岂不是所有的都得自己指定?

    最终找到直接配置Jackson(默认的视图数据转化)

    spring:
      jackson:
        time-zone: GMT+8

    回过头看一下自己的A项目,发现已经配置过这个参数了,难怪没人反馈有问题

    突然惊醒一下,我的C项目,我从头打到尾,好像没搞过这玩意,吓死自己

    结果一搜,我没用Date。。。哈哈。都用的LocalDateTime

  • 相关阅读:
    403
    311
    401
    310
    308
    309
    307
    304
    3-1
    2-11
  • 原文地址:https://www.cnblogs.com/gabin/p/15667450.html
Copyright © 2011-2022 走看看