DateTimePicker + @DateTimeFormat("yyyy-MM-dd HH:mm:ss")日期格式轉(zhuǎn)換異常
最近在做的一個(gè)項(xiàng)目使用的日期格式是yyyy-MM-dd HH:mm:ss格式的,在后端Java與MySQL這邊的轉(zhuǎn)換中一開始格式?jīng)]有統(tǒng)一間歇性的就會(huì)報(bào)異常,后面采用了一個(gè)@DateTimeFormat("yyyy-MM-dd HH:mm:ss")注解標(biāo)注在屬性上規(guī)范了 Date 類型屬性的格式(埋坑~)
在前端這邊使用的是ElementUI的日期時(shí)間組件DateTimePicker
<div class="block">
<span class="demonstration">默認(rèn)</span>
<el-date-picker
v-model="value1"
type="datetime"
placeholder="選擇日期時(shí)間">
</el-date-picker>
</div>
使用該組件進(jìn)行新增操作的時(shí)候一直拋異常
JSON parse error: Cannot deserialize value of type java.util.Date
from String "2020-01-30T16:00:00.000Z"
網(wǎng)上搜了好多資料,幾乎都是說在后端屬性上添加注解的
@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官網(wǎng)文檔,在DateTimePicker這個(gè)組件的Attributes中看到了format
format 顯示在輸入框中的格式 string 見日期格式 yyyy-MM-dd HH:mm:ss
日期格式
使用format指定輸入框的格式;使用value-format指定綁定值的格式押袍。
默認(rèn)情況下坠韩,組件接受并返回Date對(duì)象抒倚。以下為可用的格式化字串,以 UTC 2017年1月2日 03:04:05 為例:
請(qǐng)注意大小寫
格式 含義 備注 舉例
yyyy 年 2017
M 月 不補(bǔ)0 1
MM 月 01
W 周 僅周選擇器的 format 可用柒桑;不補(bǔ)0 1
WW 周 僅周選擇器的 format 可用 01
d 日 不補(bǔ)0 2
dd 日 02
H 小時(shí) 24小時(shí)制驹止;不補(bǔ)0 3
HH 小時(shí) 24小時(shí)制 03
h 小時(shí) 12小時(shí)制胀糜,須和 A 或 a 使用;不補(bǔ)0 3
hh 小時(shí) 12小時(shí)制缕坎,須和 A 或 a 使用 03
m 分鐘 不補(bǔ)0 4
mm 分鐘 04
s 秒 不補(bǔ)0 5
ss 秒 05
A AM/PM 僅 format 可用怖侦,大寫 AM
a am/pm 僅 format 可用,小寫 am
timestamp JS時(shí)間戳 僅 value-format 可用谜叹;組件綁定值為number類型 1483326245000
[MM] 不需要格式化字符 使用方括號(hào)標(biāo)識(shí)不需要格式化的字符 (如 [A] [MM]) MM
因?yàn)槭褂玫氖莿?dòng)態(tài)變量,所以在在該組件中添加了value-format屬性,設(shè)置了與后臺(tái)對(duì)應(yīng)的格式
<div class="block">
<span class="demonstration">默認(rèn)</span>
<el-date-picker
v-model="value1"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="選擇日期時(shí)間">
</el-date-picker>
</div>
翻了大半天的資料,終于解決了問題,得記錄一下,學(xué)習(xí)起來才行!