解决springboot 实体类String转Date类型的坑

 更新时间:2021年10月25日 10:32:40   作者:DemonsPan  
这篇文章主要介绍了解决springboot 实体类String转Date类型的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springboot 实体类String转Date类型

前端传入一个String的时间字符串如:2019-07-18 23:59:59

后端实体类要在头顶加注解:

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

不然会出现报错

Date解析String类型的参数

1.首先建立String to Date 的解析实现

import org.apache.commons.lang3.StringUtils;
import org.springframework.core.convert.converter.Converter;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateConverter implements Converter<String, Date> {
    private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
    private static final String shortDateFormat = "yyyy-MM-dd";
    @Override
    public Date convert(String value) {
        if (StringUtils.isEmpty(value)) {
            return null;
        }
        value = value.trim();
        try {
            if (value.contains("-")) {
                SimpleDateFormat formatter;
                if (value.contains(":")) {
                    formatter = new SimpleDateFormat(dateFormat);
                } else {
                    formatter = new SimpleDateFormat(shortDateFormat);
                }
                Date dtDate = formatter.parse(value);
                return dtDate;
            } else if (value.matches("^\\d+$")) {
                Long lDate = new Long(value);
                return new Date(lDate);
            }
        } catch (Exception e) {
            throw new RuntimeException(String.format("parser %s to Date failed", value));
        }
        throw new RuntimeException(String.format("parser %s to Date failed", value));
    }
}

2.创建全局的解析配置

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import javax.annotation.PostConstruct;
@Configuration
public class DateHandlerAdapter {
    @Autowired
    private RequestMappingHandlerAdapter handlerAdapter;
    /**
     * 增加字符串转日期的全局适配器
     */
    @PostConstruct
    public void initEditableAvlidation() {
        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter
                .getWebBindingInitializer();
        if (initializer.getConversionService() != null) {
            GenericConversionService genericConversionService = (GenericConversionService) initializer
                    .getConversionService();
            genericConversionService.addConverter(new StringToDateConverter());
        }
    }
}

添加完这两个文件以后 在传参数类型为Date的参数时就不会再报 date解析失败的错误了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot中捕获异常错误信息并将其保存到数据库中的操作方法

    Spring Boot中捕获异常错误信息并将其保存到数据库中的操作方法

    这篇文章主要介绍了Spring Boot中捕获异常错误信息并将其保存到数据库中的操作方法,通过实例代码介绍了使用Spring Data JPA创建一个异常信息的存储库接口,以便将异常信息保存到数据库,需要的朋友可以参考下
    2023-10-10
  • Java HashMap中除了死循环之外的那些问题

    Java HashMap中除了死循环之外的那些问题

    这篇文章主要介绍了Java HashMap中除了死循环之外的那些问题,这些问题大致可以分为两类,程序问题和业务问题,下面文章我们一个一个来看,需要的小伙伴可以参考一下
    2022-05-05
  • 详解JAVA 字节流和字符流

    详解JAVA 字节流和字符流

    这篇文章主要介绍了JAVA 字节流和字符流的的相关资料,文中讲解非常的细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Idea调用WebService的关键步骤和注意事项

    Idea调用WebService的关键步骤和注意事项

    这篇文章主要介绍了如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选择对接测试工具或方式、发送请求和接收响应、处理响应结果以及错误处理,需要的朋友可以参考下
    2025-01-01
  • Spring AOP事务管理的示例详解

    Spring AOP事务管理的示例详解

    这篇文章将通过转账案例为大家详细介绍一下Spring AOP是如何进行事务管理的,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • Java实现时间与字符串互相转换详解

    Java实现时间与字符串互相转换详解

    这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • Java通过IO流输出文件目录的实例代码

    Java通过IO流输出文件目录的实例代码

    这篇文章主要介绍了Java通过IO流输出文件目录,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Spring @Configuration和@Component的区别

    Spring @Configuration和@Component的区别

    今天小编就为大家分享一篇关于Spring @Configuration和@Component的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java中MyBatis的动态语句详解

    Java中MyBatis的动态语句详解

    这篇文章主要介绍了Java中MyBatis的动态语句详解,动态 SQL 是 MyBatis 的强大特性之一,通过不同参数生成不同的 SQL,可以动态地对数据持久层进行操作,而不需要每个数据访问操作都要进行手动地拼接 SQL 语句,需要的朋友可以参考下
    2023-08-08
  • Java JConsole远程连接配置案例详解

    Java JConsole远程连接配置案例详解

    这篇文章主要介绍了Java JConsole远程连接配置案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论