使用springboot框架对日期类型进行操作,遇到无法保持的情况,一开始报400的错误(解决方法),解决之后日期类型无法保存到数据库,为了解决这个问题,设置了个全局date转换器。

配置方法

1、新增一个转换类

新增一个string转换成date的类,实现Converter接口,代码如下:

import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils; 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 fail", value));
}
throw new RuntimeException(String.format("parser %s to Date fail", value));
} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

2、注册转换器

新增一个类,配置为Configuration,把第一步新增的类注册为转换器,代码如下:

import javax.annotation.PostConstruct;

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; @Configuration
public class WebConfigBeans { @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()); } } }

最新文章

  1. nodejs+express+mysql 增删改查
  2. C#可扩展编程之MEF学习
  3. Android:控件ProgressBar进度条
  4. Linux 安装字体
  5. GoF设计模式 - 概述
  6. [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上)
  7. 第二章 MySQL入门篇
  8. SharePoint客户端js对象模型
  9. swoole简单demo测试
  10. mysql 文件
  11. nodejs的某些api~(一)node的流2
  12. RMQPOJ3264
  13. 网络编程(1)—TCP
  14. #define 和typedef
  15. WOSA/XFS PTR FORM—基础知识
  16. winform:简单文件资源管理器
  17. MYSQL 表转 JavaBean 工具类
  18. Openstack-开发基础 stevedore学习
  19. NOI2019省选模拟赛 第六场
  20. mysql忘记密码重置密码方法

热门文章

  1. js文字转移效果
  2. HDU 6128 Inverse of sum(同余)
  3. C++基础-string截取、替换、查找子串函数
  4. ubuntu 14.04 安装 gflags
  5. MAC OS 英语朗读功能
  6. BeautifulSoup中的select方法
  7. stack_01
  8. angular5 directive和component的区别
  9. 谈谈Java反射机制
  10. LeetCode--176--第二高的薪水