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.
&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: ********
The original format should be like this:
&serverTimezone=GMT+8 这里使用%2b替换 + 号
#在application.yml中增加配置 spring: jackson: time-zone: GMT+8
This way you can successfully modify the time, and there are other For the method, you can check it out
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());
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
4, jackson annotation
@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)
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!