springmvc前后端日期类型的转换

来源:互联网 发布:windows系统备份还原 编辑:程序博客网 时间:2024/05/20 07:14

我们在做项目时通常会遇到,日期类型显示到前端如果不加处理显示出来就是date的long类型的毫秒值,很显然如果我们使用jstl标签可以使用格式化日期类型的标签,如

<fmt:formatDate value="${sk.startTime }" pattern="yyyy-MM-dd HH:mm:ss"/>相信你已经会使用,但显示使用jstl向页面传值比较少,一般使用json数据传输,传到回调函数进行解析,js日期类型有几个格式化函数toLocalString()转化为本地期时间格式,toDateLocalString()转化为本地日期格式,toTimeLocalString()转化为本地时间格式,toUTCString()函数写错还是写对不知道,大概印象,转化为国际日期时间格式,本地日期时间格式比较杂乱,我们不使用,国际化很明显看着就不爽。那么我们可以在后端定义统一日期格式。

如下代码

package cn.tedu.ttms.product.web;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;//自定义类实现JsonSerializer类public abstract class JsonDateTypeConvert extends JsonSerializer<Date> {@Override/** * 参数arg0 Date类型我们需要处理 * 参数arg2 JsonGenerator类型携带我们格式化后的字符串 */public void serialize(Date arg0, JsonGenerator arg1, SerializerProvider arg2)throws IOException, JsonProcessingException {//定义一个日期样式模板SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd");//根据模板格式化日期String dateStr=simpleDateFormat.format(arg0);//写入JsonGeneratorarg1.writeString(dateStr);}}

写好怎么使用呢我们只需要注解@JsonSerialize放到entity实体类里变量的get方法上如下
package cn.tedu.ttms.product.entity;import java.io.Serializable;import java.util.Date;import com.fasterxml.jackson.databind.annotation.JsonSerialize;import cn.tedu.ttms.product.web.JsonDateTypeConvert;public class Project implements Serializable {/** *  */private static final long serialVersionUID = 1L;/**项目的主键id*/private int id;/**项目名称*/private String name;/**项目编号*/private String code;/**项目开始日期*/private Date beginDate;/**项目结束日期*/private Date endDate;/**项目状态*/private Integer valid;/**项目备注*/private String note;/**记录创建时间*/private Date createdTime;/**记录修改时间*/private Date modifiedTime;/**记录创建记录的用户信息*/private String createdUser;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}@JsonSerialize(using=JsonDateTypeConvert.class)public Date getBeginDate() {return beginDate;}public void setBeginDate(Date beginDate) {this.beginDate = beginDate;}@JsonSerialize(using=JsonDateTypeConvert.class)public Date getEndDate() {return endDate;}public void setEndDate(Date endDate) {this.endDate = endDate;}public Integer getValid() {return valid;}public void setValid(Integer valid) {this.valid = valid;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}public Date getCreatedTime() {return createdTime;}public void setCreatedTime(Date createdTime) {this.createdTime = createdTime;}public Date getModifiedTime() {return modifiedTime;}public void setModifiedTime(Date modifiedTime) {this.modifiedTime = modifiedTime;}public String getCreatedUser() {return createdUser;}public void setCreatedUser(String createdUser) {this.createdUser = createdUser;}public static long getSerialversionuid() {return serialVersionUID;}}
这样的话就可以自由使用了返回到前端是就会自动转换了

当前端的日期字符串类型要提交后端时我们也需要转换,我们可以通过Springmvc的统一日期类型转化来解决,看代码

package com.drs.controller.converter;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.core.convert.converter.Converter;/** * 将传入的字符串转化为java Data类型,不解释,应该可以看懂 * @author lenovo * */public class CustomDateConverter implements Converter<String,Date>{public Date convert(String source) {//实现 将日期串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//转成直接返回try {return simpleDateFormat.parse(source);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}//如果参数绑定失败返回nullreturn null;}}

在springmvc.xml里配置

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><bean class="com.drs.controller.converter.CustomDateConverter"/></list></property></bean>



OK!



原创粉丝点击