這時,就可以使用 Spring 的 @DateTimeFormat 註解格式化參數,來解決上述問題。
再像上面壹樣訪問 /date/test ,並傳入參數:2018-08-02 22:05:55,將在控制臺上打印:
date1:Thu Aug 02 22:05:55 CST 2018
date2:2018-08-02 22:05:55
可以看到,加入 @DateTimeFormat 註解後參數可以被接收到了,但日期時間的格式還是需要自己再手動轉換壹下。
因為 @DateTimeFormat 註解的 pattern 屬性值指定的日期時間格式 並不是 將要 轉換 成的日期格式,這個指定的格式是和傳入的參數對應的,假如註解為:
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss")
則傳入的參數應該是這樣的:
2018/08/02 22:05:55
否則會拋出異常。
假如出參格式 "date": "1565003805835"
這個格式並不是我們想要的,那麽如何將其進行格式化?這時就需要用到 jackson 的 @JsonFormat 註解。
改造 DateVo:
傳入參數:2018-08-02 22:05:55,可以看到接口返回的結果為:
"date": "2018-08-01 14:32:57"
雖然時間格式正確了,但實際上當前時間是 “2018-08-01 22:32:57” ,早了8個小時。因為,jackson在序列化時間時是按照國際標準時間GMT進行格式化的,而在國內默認時區使用的是CST時區,兩者相差8小時。
所以,@JsonFormat 註解還要再加壹個屬性:
還原沖統壹格式fastjson校驗,時間格式傳入可以同時兼任時間戳和日期類型
參考: /zhou520yue520/article/details/81348926