对ajax返回的数据中的日期进行格式化,推荐在实体上加上@jsonformat这个注解,这个注解是jackson的保中的;
还要指明我们是东八时区
@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" , timezone = " GMT+8 " )
2016/5/26 更新
@JsonFormat只对单独返回实体起作用!!(如果不加@JsonFormat,Date类型的字段会返回long型)
@ResponseBody
@RequestMapping(value = "/detail", method = RequestMethod.GET)
public Exam getExamById(String id) {
//我在Exam的Date类型的字段上加了@JsonFormat注解,前台返回的就是@JsonFormat中规定的日期格式
Exam result = examService.getExamById(id);
return result;
}
没加 @JsonFormat的情况
我们可以看到endTime和startTime变成了long类型!
但是!!这时候如果我们用JSONObject包装一下,@JsonFormat就会。。。失效了!!!!
@RequestMapping(value = "/detail", method = RequestMethod.GET)
public String getExamById(String id) {
Exam result = examService.getExamById(id);
JSONObject obj = new JSONObject(result);
return jsonObject.toString();
}
这时候前台得到的Date类型字段,被JSONObject内部转了一下,成了形如这样的格式:yyyy-MM-dd HH:mm:ss.S(2016-5-26 15.44.36.0)
那么前台怎么样在被 JSONObject包装了得前提下,得到我们想要的格式了?
解决办法:
直接覆盖对应属性
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
obj.put("startTime", format.format(result.getStartTime()));
obj.put("endTime", format.format(result.getEndTime()));
NOTE:SpringMVC只能把这样的日期参数映射成Date类型!
(yyyy/MM/dd HH:mm:ss)
如果是别的pattern,请在实体对应的字段上加上 @DateTimeFormat(pattern=” yyyy -MM- dd HH:mm”)