Home > Java > javaTutorial > How to solve the time zone difference problem when querying springboot database

How to solve the time zone difference problem when querying springboot database

PHPz
Release: 2023-06-04 17:37:03
forward
1583 people have browsed it

    The time zone difference that occurs when querying the springboot database

    In recent projects, multiple data sources have been used to migrate data from the MySQL library to the mongo library and found that There will be an 8-hour difference between the time of the retrieved data and the original data.

    Finally, the problem was solved after I tried it. Let’s record it:

    I saw two more practical methods on the Internet, because Because of the springboot used, what I use here is to modify it in the configuration file application.yml. Other methods can be found online.

    1. We add an item in the configuration of connecting to the database

    &serverTimezone=GMT%2b8
    Copy after login
     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: ********
    Copy after login

    The original format should be like this:

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

    2. Add the jackson configuration directly to the boot configuration file

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

    This way you can successfully modify the time, and there are other For the method, you can check it out

    springboot new Date() time zone difference is 8 hours

    1 In the k8s environment, compare the time in the code. The difference is 8 hours under new Date()

    Check the host time zone is cst time zone

    Use java code to write the controller time zone and find that it is GMT

    code As follows:

    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());
    Copy after login

    The output time zone is GMT, which is different from the host machine. If you can’t handle the operation and maintenance, you have to do it yourself

    It seems that the time zone is still the problem-

    1. Database link db adds parameter serverTimezone=Asia/Shanghai

    2. Springboot startup script adds -Duser.timezone=GMT 08

    3. Jackson global configuration

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

    4, jackson annotation

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

    The above is the detailed content of How to solve the time zone difference problem when querying springboot database. For more information, please follow other related articles on the PHP Chinese website!

    Related labels:
    source:yisu.com
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template