后端是new Date(),在前端要顯示成自己的格式鳞疲,有兩種解決方案:
1.jstl的fmt
<fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/>
2.?使用json罪郊,這里使用的是?Jackson,它是?SpringMvc? 官方推薦結(jié)合的
我們可以有兩種用法(我知道的)尚洽,在對(duì)象屬性上悔橄,或者在屬性的?getter?方法上,如下代碼所示:
增加到屬性上:
/**更新時(shí)間 用戶可以點(diǎn)擊更新翎朱,保存最新更新的時(shí)間橄维。**/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
增加到?getter?方法上:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
public Date getUpdateTime() {
? ? return updateTime;
}
以上結(jié)果輸出都是一樣的。這個(gè)沒(méi)有什么好說(shuō)明的拴曲。具體輸出格式争舞,自己調(diào)整?pattern?。
@JsonFormat 相差8小時(shí)問(wèn)題:
上面直接這么使用澈灼,在我們中國(guó)來(lái)講和我們的北京時(shí)間竞川,會(huì)相差8個(gè)小時(shí),因?yàn)槲覀兪菛|八區(qū)(北京時(shí)間)叁熔。
所以我們?cè)诟袷交臅r(shí)候要指定時(shí)區(qū)(timezone?)委乌,代碼如下:
**更新時(shí)間 用戶可以點(diǎn)擊更新,保存最新更新的時(shí)間荣回。**/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
咱看看結(jié)果遭贸,我這個(gè)接口就是這么輸出的:公安網(wǎng)備查詢?,以?http://www.sojson.com/api/gongan/sina.com.cn?為例心软。
{
? ? "data": {
? ? ? ? "id": "11000002000016",
? ? ? ? "sitename": "新浪網(wǎng)",
? ? ? ? "sitedomain": "sina.com.cn",
? ? ? ? "sitetype": "交互式",
? ? ? ? "cdate": "2016-01-21",
? ? ? ? "comtype": "企業(yè)單位",
? ? ? ? "comname": "北京新浪互聯(lián)信息服務(wù)有限公司",
? ? ? ? "comaddress": "北京市網(wǎng)安總隊(duì)",
? ? ? ? "updateTime": "2017-09-05 02:26:34" //看這...這里就是剛剛輸出的壕吹。
? ? },
? ? "status": 200
}
注意問(wèn)題:
@JsonFormat可以方便的格式化時(shí)間字段著蛙。
默認(rèn)情況下Jackson將?java.util.Date?序列化為?epoch timestamp,并且時(shí)區(qū)使用的是?GMT標(biāo)準(zhǔn)時(shí)間耳贬,而非本地時(shí)區(qū)踏堡。
但這個(gè)注解看了下只在 Jackson2 才有。于是我陷入了Spring 版本和Jackson2的迷思中咒劲,一番折騰顷蟆。
如果不想使用@JsonFormat注解,jackson-mapper-asl仍然可以使用1.x的版本腐魂,來(lái)搭配 Spring 3.x系列帐偎。
如果想使用@JsonFormat注解,需要將Spring升級(jí)到3.1.2以上挤渔。
并且要將Jackson的jar包更換為2.x系列的(和1.x系列相比肮街,包名都換了)。
在Jackson1.x時(shí)代判导,可以擴(kuò)展JsonSerializer嫉父,來(lái)實(shí)現(xiàn)一個(gè)格式化時(shí)間的JsonDateSerializer,并在注解中引用這個(gè)類
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDate() {
returndate;
}