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

目录

  • springboot 实体类String转Date类型
  • Date解析String类型的参数

springboot 实体类String转Date类型 前端传入一个String的时间字符串如:2019-07-18 23:59:59
后端实体类要在头顶加注解:
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

解决springboot|解决springboot 实体类String转Date类型的坑
文章图片

不然会出现报错
解决springboot|解决springboot 实体类String转Date类型的坑
文章图片


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 {private static final String dateFormat = "yyyy-MM-dd HH:mm:ss"; private static final String shortDateFormat = "yyyy-MM-dd"; @Overridepublic Date convert(String value) {if (StringUtils.isEmpty(value)) {return null; }value = https://www.it610.com/article/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; @Configurationpublic class DateHandlerAdapter {@Autowiredprivate RequestMappingHandlerAdapter handlerAdapter; /*** 增加字符串转日期的全局适配器*/@PostConstructpublic void initEditableAvlidation() {ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter.getWebBindingInitializer(); if (initializer.getConversionService() != null) {GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService(); genericConversionService.addConverter(new StringToDateConverter()); }}}

添加完这两个文件以后 在传参数类型为Date的参数时就不会再报 date解析失败的错误了。
【解决springboot|解决springboot 实体类String转Date类型的坑】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读