后端是new Date(),在前端要显示成自己的格式,有两种解决方案:
1.jstl的fmt
<fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/>
2. 使用json,这里使用的是 Jackson,它是 SpringMvc 官方推荐结合的
我们可以有两种用法(我知道的),在对象属性上,或者在属性的 getter 方法上,如下代码所示:
增加到属性上:
/**更新时间 用户可以点击更新,保存最新更新的时间。**/
@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;
}
以上结果输出都是一样的。这个没有什么好说明的。具体输出格式,自己调整 pattern 。
@JsonFormat 相差8小时问题:
上面直接这么使用,在我们中国来讲和我们的北京时间,会相差8个小时,因为我们是东八区(北京时间)。
所以我们在格式化的时候要指定时区(timezone ),代码如下:
**更新时间 用户可以点击更新,保存最新更新的时间。**/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
咱看看结果,我这个接口就是这么输出的:公安网备查询 ,以 http://www.sojson.com/api/gongan/sina.com.cn 为例。
{
"data": {
"id": "11000002000016",
"sitename": "新浪网",
"sitedomain": "sina.com.cn",
"sitetype": "交互式",
"cdate": "2016-01-21",
"comtype": "企业单位",
"comname": "北京新浪互联信息服务有限公司",
"comaddress": "北京市网安总队",
"updateTime": "2017-09-05 02:26:34" //看这...这里就是刚刚输出的。
},
"status": 200
}
注意问题:
@JsonFormat可以方便的格式化时间字段。
默认情况下Jackson将 java.util.Date 序列化为 epoch timestamp,并且时区使用的是 GMT标准时间,而非本地时区。
但这个注解看了下只在 Jackson2 才有。于是我陷入了Spring 版本和Jackson2的迷思中,一番折腾。
如果不想使用@JsonFormat注解,jackson-mapper-asl仍然可以使用1.x的版本,来搭配 Spring 3.x系列。
如果想使用@JsonFormat注解,需要将Spring升级到3.1.2以上。
并且要将Jackson的jar包更换为2.x系列的(和1.x系列相比,包名都换了)。
在Jackson1.x时代,可以扩展JsonSerializer,来实现一个格式化时间的JsonDateSerializer,并在注解中引用这个类
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDate() {
returndate;
}