服务器之家

服务器之家 > 正文

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

时间:2022-02-27 15:27     来源/作者:DemonsPan

springboot 实体类String转Date类型

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

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

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

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

不然会出现报错

解决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<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解析失败的错误了。

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

原文链接:https://blog.csdn.net/weixin_42439513/article/details/96477831

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部