首頁 > 軟體

java日期時間格式化@JsonFormat與@DateTimeFormat的使用

2022-08-17 18:00:27

如果要使用 @JsonFormat 這個註解的話,需要在專案中新增 jackson 相關的依賴包;

因為 @JsonFormat 註解不是 Spring 自帶的註解,所以使用該註解前需要新增 jackson 相關的依賴包。當然,如果是 SpringBoot 專案就不需要自己手動新增依賴了,因為在 spring-boot-start-web 下已經包含了 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>

大家可以去這個網站搜尋想要的依賴:https://mvnrepository.com

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
將後端返回給前端的日期時間進行格式化,pattern為轉換後的格式,timezone為日期時間的時區
預設情況下timeZone為GMT(即標準時區),而北京是在東八區,所以會造成差8小時
提示:@JsonFormat註解可以在屬性的上方,同樣可以在屬性對應的get方法上,兩種方式沒有區別

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime userCreateDate;

@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
將前端傳給後端的日期時間進行格式化,pattern為轉換後的格式

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCreateDate;

POST請求,我們一般會用@RequestBody接收JSON物件,如果物件裡面有日期時間型別資料的話,我們可以使用 @JsonFormat註解進行格式化,它既可以對出參進行格式化,也可以對入參進行格式化

GET請求引數都是拼接在URL後面的,則需要使用@DateTimeFormat對入參進行格式化,放到@RequestBody修飾的物件裡面是無效的

@JsonFormat是格式化json格式的。
@DateTimeFormat是格式化 key=value 這種格式的。

需要取資料到前臺,也需要前臺資料傳到後臺,都需要進行時間格式的轉換,可以同時使用

  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
  private Date symstarttime;

SpringBoot的組態檔

application.yml

spring:
  # Content-Type 為 application/json, @JsonFormat(優先順序高) 或 spring.jackson.date-format
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  # Content-Type 為 application/x-www-form-urlencoded(普通表單上傳)spring.mvc.date-format(優先順序高) 或 @DatetimeFormat
  mvc:
    format:
      date-time: yyyy-MM-dd HH:mm:ss

application.properties

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.indent_output=true
spring.jackson.serialization.fail_on_empty_beans=false

到此這篇關於java日期時間格式化@JsonFormat與@DateTimeFormat的使用的文章就介紹到這了,更多相關java @JsonFormat與@DateTimeFormat內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com