Spring时间(Date)类型转换+自定义
第一种方法:利用内置的 CustomDateEditor(不推荐,每个类都需要定义)
首先,在我们的 Controller 的 InitBinder 里面,注册 CustomEditor
//首先初始化这个方法 @InitBinder public void init (WebDataBinder binder) { CustomDateEditor dateEditor = new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true); binder.registerCustomEditor(Date.class, dateEditor); }
当提交的时候,会进入
Spring配置Converter、Formatter日期转换
第二种方法:实现自定义 Converter或者Formatter<Date>
首先创建一个类继承Converter<String, Date>接口

package com.wbg.maven1128.miscellanueous; import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class MuDateConverter implements Converter<String, Date> { @Override public Date convert(String value) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date=null; try { date = simpleDateFormat.parse(value); } catch (ParseException e) { e.printStackTrace(); } return date; } }
或者一个类继承Formatter<Date>

package com.wbg.maven1128.miscellanueous; import org.springframework.format.Formatter; import javax.xml.crypto.Data; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class MDateFormatter implements Formatter<Date> { // 日期类型模板:如yyyy-MM-dd 默认 private String datePattern="yyyy-MM-dd"; // 日期格式化对象 private SimpleDateFormat dateFormat; // 构造器,通过依赖注入的日期类型创建日期格式化对象 public MDateFormatter(String datePattern){ super(); this.datePattern=datePattern; dateFormat = new SimpleDateFormat(datePattern); } @Override public String print(Date data, Locale locale) { dateFormat.setLenient(false); return dateFormat.format(data); } // 解析文本字符串返回一个Formatter<T>的T类型对象 @Override public Date parse(String text, Locale locale) throws ParseException { return dateFormat.parse(text); } }
接口
然后xml配置并注册 ConversionService:
converters

<bean name="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.wbg.maven1128.miscellanueous.MuDateConverter" /> </set> </property> </bean> <!--启用--> <mvc:annotation-driven conversion-service="conversionService" />
factoryBean

<bean name="factoryBean" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="formatters"> <set> <bean class="com.wbg.maven1128.miscellanueous.MDateFormatter" > <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> </bean> </set> </property> </bean> <mvc:annotation-driven conversion-service="factoryBean"/>
提交的时候
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下