时间返回格式统一处理的几种办法
方式一:注解
pojo的bean里面通常会有Date类型的数据,直接通过@ResponseBody返回出去的是一个长整型时间戳(从1970到该变量时间的毫秒数),关于原因,网上很多,此处不细讲。如果想要返回自定义的日期格式,如:yyyymmddhhmmss,需做相关处理,网上有很多处理方式,大体都是继承、重写,比较复杂。实际上JSON已有注解@JsonFormat支持,使用实例(在bean字段上或者get方法上加上此注解,注意指定时区):
@JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss") private Date createTime;
此方式由于是注解在类字段上,使用方便,但是不能统一全局处理
方式二:spring配置文件
配置如下:
<!-- spring适配器 注:此适配器要放在注解驱动前才行,否则无法解析--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter" /> <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /> <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"> <!-- 设置全局返回JSON到前端时日期格式化 --> <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/> </bean> </property> </bean> </property> </bean> </list> </property> <property name="customArgumentResolvers"> <list> <ref bean="userArgumentResolver" /><!-- 参数自动注入 --> </list> </property> </bean>
此配置可以全局处理日期格式