詳細的理解參照
https://blog.csdn.net/qq_28483283/article/details/81326365

兩者使用時,都要注意!自己想要的時間類型是什么樣的,如果只是用到日期到天,那么格式就是(pattern=”yyyy-MM-dd”),想要時分秒的話,那么就要加上HH:mm:ss,因為前后台都需要傳數據,所以需要保持一致,否則就會報錯誤,比如:日志管理的時候,我沒有加時分秒,但是我頁面傳遞了時分秒,所以導致數據進入后台時分秒是00:00:00,就會導致同一天的數據查詢為空的bug,注意
@JsonFormat、@JSONField、@DateTimeFormat的使用以及其區別
1、JsonFormat來源於jackson,Jackson是一個簡單基於Java應用庫,Jackson可以輕松的將Java對象轉換成json對象和xml文檔,同樣也可以將json、xml轉換成Java對象。Jackson所依賴的jar包較少,簡單易用並且性能也要相對高些,並且Jackson社區相對比較活躍,更新速度也比較快。
2、JSONField來源於fastjson,是阿里巴巴的開源框架,主要進行JSON解析和序列化。
3、DateTimeFormat是spring自帶的處理框架,主要用於將時間格式化。
@DateTimeFormat使用方法:
我們可以使用@DateTimeFormat注解將一個字符串轉成一個Date對象,pojo類上的哪個Date類型的字段需要,就需要用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 標記,這樣前端頁面傳遞過來的String類型的時間 '2016-11-11 11:11:11' 會轉換為 Date 類型
原因是:頁面將數據傳到后台,是以字符串的形式。所以時間格式會出錯。加上此注解,后台可解析時間格式的字符串。
但需要注意一下事項:
1.如果是小寫的hh,那個值代表着1-12,比如,我是在下午16:30傳入參數的,而小寫的h最大只能接受12的值,傳入16就出錯了,所有無法將String轉為Date類型。
2. 可以使用在字段上也可以使用在方法中。如: public String
test2(@RequestParam("uid") int id,
@DateTimeFormat(pattern="yyyy-MM-dd")Date date,
UserInfo user) {}
3.需要導入joda-time.jar包,maven的配置方式為:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.6</version>
</dependency>
4.需要啟動mvc中的注解驅動 <mvc:annotation-driven />
xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 啟用mvc中的注解驅動 -->
<mvc:annotation-driven></mvc:annotation-driven>
@JsonFormat
但是后台傳到前台,前台沒辦法解析。需要做如下操作。
@JsonFormat(pattern=”yyyy-MM-dd”)
用法 為在屬性值上 @JsonFormat(pattern=”yyyy-MM-dd”,timezone=”GMT+8”),如果直接使用 @JsonFormat(pattern=”yyyy-MM-dd”)就會出現2018-08-01 08:00:00的情況, 會相差8個小時,因為我們是東八區(北京時間)。所以我們在格式化的時候要指定時區(timezone )
