温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot数据库查询时出现时区差异问题怎么解决

发布时间:2023-01-09 10:57:09 来源:亿速云 阅读:112 作者:iii 栏目:开发技术

今天小编给大家分享一下springboot数据库查询时出现时区差异问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    springboot数据库查询时出现的时区差异

    最近项目中使用到多数据源将MySQL库中的数据迁移到mongo库中,发现取出后的数据与原数据时间上会出现8小时的相差,

    最后度娘后终于解决问题,记录一下:

    网上看到了两种比较实用的方法,因为使用的springboot原因,所以我这里使用的是在配置文件application.yml中进行修改,另外其他方法网上都可以搜到,

    1.在连接数据库的配置上我们添加一项

    &serverTimezone=GMT%2b8
     primary:
          jdbc-url: jdbc:mysql://******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
          username: ****
          password: *****
        secondary:
          jdbc-url: jdbc:mysql://*******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
          username: *****
          password: ********

    原格式应该是这样的:

    &serverTimezone=GMT+8 这里使用%2b替换 + 号

    2.直接在boot配置文件中增加jackson配置

    #在application.yml中增加配置
    spring:
        jackson:
            time-zone: GMT+8

    这样就可以成功将时间修改成功了,还有其他方法,大家可以查阅哦

    springboot new Date()时区差8小时

    1 在k8s环境中,在代码中比较时间。new Date() 下相差8小时

    检查宿主机 时区是 cst时区

    用java代码写出controller时区发现是GMT

    代码如下:

    Calendar calendar = Calendar.getInstance();      
            System.out.println("目前时间:" + calendar.getTime());
            System.out.println("Calendar时区::" + calendar.getTimeZone().getID());
            System.out.println("user.timezone:" + System.getProperty("user.timezone"));
            System.out.println("user.country:" + System.getProperty("user.country"));
            System.out.println("默认时区:" + TimeZone.getDefault().getID());

    输出时区是 GMT 跟宿主机还不一样,搞不定运维,自己搞把

    看来还是时区搞的鬼-

    1、数据库链接db添加参数 serverTimezone=Asia/Shanghai

    2、springboot启动脚本添加 -Duser.timezone=GMT+08

    3、jackson 全局配置

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

    4、jackson 注解

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

    以上就是“springboot数据库查询时出现时区差异问题怎么解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI