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

网友投稿 1333 2022-11-29

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

解决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")

不然会出现报错

Date解析String类型的参数

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

import org.apache.commons.lang3.StringUtils;

import org.sprinhttp://gframework.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";

@Override

public Date convert(String value) {

if (StringUtils.isEmpty(value)) {

return null;

}

value = value.trim();

try {

if (value.contains("-")) {

SimpleDateFormat formatter;

ifhttp:// (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 initEditabhttp://leAvlidation() {

ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter

.getWebBindingInitializer();

if (initializer.getConversionService() != null) {

GenericConversionService genericConversionService = (GenericConversionService) initializer

.getConversionService();

genericConversionService.addConverter(new StringToDateConverter());

}

}

}

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:02---控制移动底座3
下一篇:第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~