12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package com.api.base.config;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.core.convert.converter.Converter;
- import org.springframework.lang.Nullable;
- import org.springframework.stereotype.Component;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- @Component
- public class DateConverterConfig implements Converter<String, Date> {
- private Logger logger = LoggerFactory.getLogger(this.getClass());
- private static final List<String> formarts = new ArrayList<>(4);
- static{
- formarts.add("yyyy-MM");
- formarts.add("yyyy-MM-dd");
- formarts.add("yyyy-MM-dd hh:mm");
- formarts.add("yyyy-MM-dd hh:mm:ss");
- }
- @Nullable
- @Override
- public Date convert(String source) {
- String value = source.trim();
- if ("".equals(value)) {
- return null;
- }
- if(source.matches("^\\d{4}-\\d{1,2}$")){
- return parseDate(source, formarts.get(0));
- }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
- return parseDate(source, formarts.get(1));
- }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
- return parseDate(source, formarts.get(2));
- }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
- return parseDate(source, formarts.get(3));
- }else {
- throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
- }
- }
- /**
- * 格式化日期
- * @param dateStr String 字符型日期
- * @param format String 格式
- * @return Date 日期
- */
- private Date parseDate(String dateStr, String format) {
- Date date=null;
- try {
- DateFormat dateFormat = new SimpleDateFormat(format);
- date = dateFormat.parse(dateStr);
- } catch (Exception e) {
- logger.error("日期转换出错",e);
- }
- return date;
- }
- }
|