DateTimePicker + @DateTimeFormat("yyyy-MM-dd HH:mm:ss")日期格式轉換異常
最近在做的一個項目使用的日期格式是yyyy-MM-dd HH:mm:ss格式的,在后端Java與MySQL這邊的轉換中一開始格式沒有統一間歇性的就會報異常,后面采用了一個@DateTimeFormat("yyyy-MM-dd HH:mm:ss")注解標注在屬性上規范了 Date 類型屬性的格式(埋坑~)

在前端這邊使用的是ElementUI的日期時間組件DateTimePicker
<div class="block">
<span class="demonstration">默認</span>
<el-date-picker
v-model="value1"
type="datetime"
placeholder="選擇日期時間">
</el-date-picker>
</div>
使用該組件進行新增操作的時候一直拋異常
JSON parse error: Cannot deserialize value of type java.util.Date from String "2020-01-30T16:00:00.000Z"
網上搜了好多資料,幾乎都是說在后端屬性上添加注解的
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonField(format = "yyyy-MM-dd HH:mm:ss" )
這些注解都嘗試過,都不能解決問題,一直修改重啟修改重啟搞的賊煩躁,后面在大佬的提示下去看了Element官網文檔,在DateTimePicker這個組件的Attributes中看到了format
format 顯示在輸入框中的格式 string 見日期格式 yyyy-MM-dd HH:mm:ss
日期格式
使用format指定輸入框的格式;使用value-format指定綁定值的格式。
默認情況下,組件接受並返回Date對象。以下為可用的格式化字串,以 UTC 2017年1月2日 03:04:05 為例:
請注意大小寫
格式 含義 備注 舉例
yyyy 年 2017
M 月 不補0 1
MM 月 01
W 周 僅周選擇器的 format 可用;不補0 1
WW 周 僅周選擇器的 format 可用 01
d 日 不補0 2
dd 日 02
H 小時 24小時制;不補0 3
HH 小時 24小時制 03
h 小時 12小時制,須和 A 或 a 使用;不補0 3
hh 小時 12小時制,須和 A 或 a 使用 03
m 分鍾 不補0 4
mm 分鍾 04
s 秒 不補0 5
ss 秒 05
A AM/PM 僅 format 可用,大寫 AM
a am/pm 僅 format 可用,小寫 am
timestamp JS時間戳 僅 value-format 可用;組件綁定值為number類型 1483326245000
[MM] 不需要格式化字符 使用方括號標識不需要格式化的字符 (如 [A] [MM]) MM
因為使用的是動態變量,所以在在該組件中添加了value-format屬性,設置了與后台對應的格式
<div class="block">
<span class="demonstration">默認</span>
<el-date-picker
v-model="value1"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="選擇日期時間">
</el-date-picker>
</div>
翻了大半天的資料,終於解決了問題,得記錄一下,學習起來才行!
