推薦寫法:
@JSONField(format = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDate birthday;
前端讀取數據庫日期字段時使用 @JsonFormat和@JSONField 可以將時間戳轉為格式化的日期數據。
前端使用JSON提交時用@JsonFormat和@JSONField
前端使用Form提交時用@DateTimeFormat
也可以使用String接收,這樣就不用寫注解了
private String birthday;
@DateTimeFormat:
spring自帶的,將String轉換成Date,一般前台給后台傳值時用
@DateTimeFormat是Spring的注解,作用是限制前端傳入的時間格式,如果格式不匹配,則會拋出異常,可以理解成一種格式限制,不加該注解,Spring也會將前端傳入的時間字符串解析成Date類型
因為其用法比較單一,只用於將字符串格式化成日期,在加入spring以后,直接使用注解@DateTimeFormat(pattern=”yyyy-MM-dd”)
即可。@DateTimeFormat 注解有3個可選的屬性:style,pattern和iso。
屬性允許我們使用自定義的日期/時間格式。該屬性的值遵循java標准的date/time格式規范。缺省的該屬性的值為空,也就是不進行特殊的格式化。通常情況下我們都是使用這個 注解做自定義格式化的。
@JsonFormat
主要用於后台傳值到前台,@JsonFormat是Jackson的注解,和@JSONField功能相同,將日期按照指定格式進行格式化(eg:將Date轉換成String ),模式的市區是GMT
在屬性值上 @JsonFormat(pattern=”yyyy-MM-dd”,timezone=”GMT+8”)
,如果直接使用 @JsonFormat(pattern=”yyyy-MM-dd”)
就會出現2018-08-01 08:00:00的情況, 會相差8個小時,因為我們是東八區(北京時間)。所以我們在格式化的時候要指定時區(timezone )
@JSONField
@JSONField是fastjson的注解,主要進行JSON解析和序列化,作用是將日期按照指定的格式,格式化為字符串,返回給前端
目前最常的用屬性是@JSONField(name=”resType”)和 @JSONField(format=”yyyy-MM-dd”)
name:@JSONField(name=”resType”)
主要用於指定前端傳到后台時對應的key值,如果bean中沒有這個注解,則默認前端傳過來的key是field本身,即如果是private String name,name前端對應的key就是name才能對應上。
format :@JSONField(format=”yyyy-MM-dd”)
主要用於格式化日期,比如前台傳過來的時間是2018-07-12 17:44:08,但是通過這個注解,你存到數據庫的時間就是2018-07-12 00:00:00.