springmvc 时间格式的String转Date

本文介绍如何在SpringMVC中解决日期格式转换时丢失时分秒的问题。通过重写Controller中的initBinder方法并注册自定义日期编辑器,实现精确到秒的日期格式转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springmvc现有日期格式转换会丢失掉时分秒,我们只需在Controller中重写initBinder 方法就可以,代码如下:
    @Override
    public void initBinder(WebDataBinder binder) {
        super.initBinder(binder);
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        CustomDateEditor dateEditor = new CustomDateEditor(df, true);
        //表示如果命令对象有Date类型的属性,将使用该属性编辑器进行类型转换
        binder.registerCustomEditor(Date.class, dateEditor);
    }

在Spring MVC中,自定义类型换通常涉及到创建一个`Converter`实现类,以便将从用户输入(如请求参数、表单等)获取的数据换为你需要的特定类型,比如Date。这里是一个完整的案例: 首先,你需要创建一个日期换器接口(如`CustomDateConverter`): ```java import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public interface CustomDateConverter extends Converter<String, Date> { } ``` 然后,实现这个接口,并提供具体的换逻辑: ```java import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; @Component public class CustomDateStringToDateConverter implements CustomDateConverter { private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); @Override public Date convert(String source) { try { return dateFormat.parse(source); } catch (ParseException e) { throw new IllegalArgumentException("Invalid date format, expected 'yyyy-MM-dd'.", e); } } } ``` 接下来,在Spring MVC的配置中注册这个换器: ```java @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Autowired private CustomDateStringToDateConverter customDateConverter; @Override protected ConfigurableTypeResolver createDefaultConversionService() { DefaultConversionService conversionService = new DefaultConversionService(); conversionService.addConverter(customDateConverter); return conversionService; } } ``` 现在,当你尝试将请求参数解析为Date类型时,Spring MVC会自动调用你提供的`CustomDateStringToDateConverter`。 例如,假设你在控制器方法中有一个接收日期参数的参数: ```java @PostMapping("/process-date") public String processDate(@RequestParam("date") Date inputDate) { // 使用inputDate处理业务逻辑... } ``` 如果你传递的请求参数格式是"2023-05-20",它将会被换成对应的Date对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值