In development, when we query the date type in the database, it is often not in the time format we want, such as the following situation:
These dates are related in my database The fields are all set to datatime format:
The data types are as follows:
The entity is configured like this:
Then the default query result is like this:
Help, what kind of format is this, it’s not me at all The desired year, month, day, hour, minute and second.
In fact, it is very simple to solve this problem. It is just that the time format is wrong. Let’s solve this problem through global settings and local settings.
Generally speaking, for convenience and uniformity, we can set global processing date formatting and configure it in the configuration file
Think of the application configuration file as having properties and There are two formats of yaml. I have prepared the codes required for different formats respectively.
properties format
# 设置全局的日期格式为年月日时分秒 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss # 世界标准时间,为了方式时差,需要+8小时 spring.jackson.time-zone=GMT+8
yaml format
Of course, the above is the properties format, if you are using the yaml format, then you can Use the following configuration:
spring jackson: date-format: yyyy-MM-dd HH:mm:ss #设置全局的日期格式为年月日时分秒 time-zone: GMT+8 #世界标准时间,为了方式时差,需要+8小时
After adding this configuration item, you can restart the service and access the interface again:
You can find that it is the time format we want, but the time is found It is 8 hours longer than the database.
This is caused by adding the time zone. If the time zone configuration item is added, it will be 8 hours longer than the original time. Therefore, this time zone configuration item depends on personal needs and can be configured. You don’t need to configure it
Although global configuration is very popular, sometimes we cannot force the global to maintain a unified format , only perform time processing on individual ones
At this time, the role of local settings is reflected. For the convenience of demonstration, I comment out the global settings:
Introducing pom
Local settings require the use of fastjson dependencies, so you need to download the dependencies
<!--fastjson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>
Add annotations
Add annotations to the fields that require time formatting :
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
It has two parameters:
1: pattern: time format
2: timezone: time zone
The principle is the same as the two parameters of global settings
Here I estimate that I will take out one annotated and one unannotated time attribute for comparison:
Restart the project, test the interface, and compare the two Date format
Of course, like the global configuration, the parameters in the annotation can also be flexibly selected according to your own needs:
For example, I don’t want the time zone here and if you want the format of year, month and day, then just change it directly:
The result will of course be how you configure it:
The above is the detailed content of How SpringBoot implements setting global and local time formatting. For more information, please follow other related articles on the PHP Chinese website!