JsonFormat
和 DateTimeFormat
是兩個不同的註解,它們用於不同的場景。
JsonFormat
是 Jackson 庫中的註解,它用於指定 Java 對象在序列化或反序列化爲/從 JSON 時的格式。
DateTimeFormat
是 Joda-Time 庫中的註解,它用於指定日期和時間字段的格式。
因此,如果你使用 Jackson 庫處理 JSON 數據,那麼你應該使用 JsonFormat
註解;如果你使用 Joda-Time 庫處理日期和時間,那麼你應該使用 DateTimeFormat
註解。
一般都是使用@DateTimeFormat把傳給後臺的時間字符串轉成Date,使用@JsonFormat把後臺傳出的Date轉成時間字符串,但是@DateTimeFormat只會在類似@RequestParam的請求參數上生效,如果@DateTimeFormat放到@RequestBody下是無效的。
在@RequestBody中則可以使用@JsonFormat把傳給後臺的時間字符串轉成Date,也就是說@JsonFormat其實既可以把傳給後臺的時間字符串轉成Date也可以把後臺傳出的Date轉成時間字符串。
前端get請求如下傳參,後端寫如下註解才能接收到參數,不如@JsonFormat方便
?date=2021-11-11 23:23:23
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@RequestParam LocalDateTime date