最近看到一些介紹這兩個注解的文章,有一些說的不夠準确,是以在此記錄一下
如果要使用 @JsonFormat 這個注解的話,需要在項目中添加 jackson 相關的依賴包
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
如果要使用 @DateTimeFormat 這個注解的話,需要在項目中添加 springframework 相關的依賴包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
注:SpringBoot的 spring-boot-start-web 下已經包含了jackson的相關依賴,spring-boot-starter-freemarker 下已經包含了springframework的相關依賴,不需要額外添加,我這裡使用的開發工具是idea,使用Maven Helper這個插件可以看pom依賴關系樹
- Maven Helper 插件
日期時間格式化 @JsonFormat與@DateTimeFormat -
使用Maven Helper檢視依賴關系樹
jackson
springframework日期時間格式化 @JsonFormat與@DateTimeFormat 日期時間格式化 @JsonFormat與@DateTimeFormat
大家可以去這個網站搜尋想要的依賴:https://mvnrepository.com
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime userCreateDate;
将後端傳回給前端的日期時間進行格式化,pattern為轉換後的格式,timezone為日期時間的時區
在國内預設時區使用的是CST時區,兩者相差8小時,這裡時區為設定時區為上海時區
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCreateDate;
将前端傳給後端的日期時間進行格式化,pattern為轉換後的格式
總結
POST請求,我們一般會用@RequestBody接收JSON對象,如果對象裡面有日期時間類型資料的話,我們可以使用 @JsonFormat 注解進行格式化,它既可以對出參進行格式化,也可以對入參進行格式化
GET請求參數都是拼接在URL後面的,則需要使用@DateTimeFormat對入參進行格式化,放到@RequestBody修飾的對象裡面是無效的