在JavaWeb 開發過程中,日期格式的數據傳輸問題需要注意。當前端傳遞的日期格式與后台需要的不一致時,請求會報錯400,接下來我以常用的兩個注解來講述這類問題的解決。
1.引入@jsonFormat的依賴
<!--@JsonFormat依賴引入-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
</dependency>
2.@JsonFormat注解的使用
其能將前端返回的時間按我們想要的日期格式傳到后台
在屬性上加注解@JsonFormat,其中參數:
pattern:你想要其轉換的日期格式
timezone:是時間設置為東八區,避免時間在轉換中差8個鍾
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date studyDate;
3.如果注釋注解@DateTimeFormat,前端傳入則會會報錯400,錯誤請求,原因是后端需要的是日期格式,但是前端給的是String,所以需要加注解@DateTimeFormat來將前端傳來的String 轉為 Date類型。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date studyDate; public TestEntity(String name, Date studyDate) { this.name = name; this.studyDate = studyDate; }
總結:
@JsonFormat注解的作用是格式化時間類型數據傳輸時的格式,以自己想要的格式來展示日期,同時也設置時區,避免時間展示與想要的結果產生誤差。
@DateTimeFormat注解作用則是將前端傳來的字符串類型的日期轉為后台需要的時間類型結果,不加此注解,請求會報錯400,請求參數錯誤,對於此類錯誤要注意int類型數據傳輸也是一樣。
