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

     

  • 相关阅读:
    Web开发中的显示与隐藏
    Html中的表格
    go标准库的学习-encoding/json
    go-simplejson文档学习
    go标准库的学习-regexp
    go标准库的学习-net
    go标准库的学习-strconv-字符串转换
    go标准库的学习-strings-字符串操作
    go标准库的学习-net/rpc
    go标准库的学习-net/rpc/jsonrpc
  • 原文地址:https://www.cnblogs.com/wbxk/p/10679556.html
Copyright © 2011-2022 走看看