zoukankan      html  css  js  c++  java
  • SpringBoot 接口返回的 JSON 数据的时间误差8小时

    最近做的一个springboot2.0项目。

    前提是我的服务器时区没有问题:

    [root@wangbo ~]# date -R
    Mon, 22 Apr 2019 19:24:33 +0800

    可以参考:查看和修改Linux服务器的时区和时间

    使用MySQL57,(程序中打印的时间字段)查询出的时间字段总是和数据库存储的相差两个小时。

    最后是通过修改数据库连接解决了这个问题。添加了下面这个属性。

    &serverTimezone=Asia/Shanghai

    接着又出现问题了。

    默认情况下使用 @ResponseBody ,项目返回的JSON数据,返回对象会自动转为JSON格式,但是对象中的日期格式Date字段转换的时候相差了八小时,程序内打印时间没有问题,如果将 Date 改为 String 类型的话,也不会出现这种情况了。

    所以问题应该出在返回结果格式化为JSON的这个过程中。

    原因是spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内应该是相差8小时,所以在时间换算上自动减去了8小时。

    可以通过jackson 的注解 @JsonFormat 解决问题

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

    也可以在 SpringBoot 配置文件中统一配置,推荐使用这种方式:

      spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
      spring.jackson.time-zone=GTM+8

     

  • 相关阅读:
    [转]深入理解Flash Player重绘
    type tips
    textfield tips
    HTML5---3.表单新增的type属性
    HTML5---2.语义化标签的兼容性问题以及解决方案
    HTML5---14.自定义标签
    HTML5---1.语义化标签
    第三章 DOM
    《将博客搬至CSDN》
    一些简单的编程练习题
  • 原文地址:https://www.cnblogs.com/wbxk/p/10679556.html
Copyright © 2011-2022 走看看