数据库字段类型为datetime类型
如果对字段不做格式化处理
"createtime":"2017-11-27 19:30:04.0", -->createtime 用的是String类型接收
"updatetime":1511925354000 -->updatetime用的是java.until.Date类型接收
对2个字段加上格式化注解
@DateTimeFormat(pattern = "yyyy年MM月dd日 HH:mm:ss") @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss") public String getCreatetime() { return createtime; }
输出结果如下@DateTimeFormat(pattern = "yyyy年MM月dd日 HH:mm:ss") @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss") public Date getUpdatetime() { return updatetime; }
"createtime":"2017-11-27 19:30:04.0"
"updatetime":"2017年11月29日 03:22:14"
对于String类型的字段加上json日期格式化注解无效,所以把所有日期字段都换成了java.until.Date类型
由于项目当中有大量的日期字段,所以应该配置全局日期格式化
项目使用的是spring4.x 所以配置如下
<mvc:annotation-driven> <!-- 处理responseBody 里面日期类型 --> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy.MM.dd HH:mm:ss" /> </bean> </property> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
输出结果如下:
"updatetime":"2017年11月29日 03:25:15" 该字段仍然有注解形式
"lasttime":"2017.11.29 11:24:46" 无注解Date类型
所以可以发现,当我们配置全局日期格式化时,系统默认所有日期输出格式为
yyyy.MM.dd HH:mm:ss
如果对于某些字段需要特殊处理时
@DateTimeFormat(pattern = "yyyy年MM月dd日 HH:mm:ss") @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss") public Date getUpdatetime() { return updatetime; }