package com.highdatas.srs.util;
|
|
import org.springframework.core.convert.converter.Converter;
|
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;
|
|
/**
|
* @author kimi
|
* @description
|
* @date 2020-01-17 14:35
|
*/
|
|
|
@Component
|
public class CustomDate implements Converter<String, Date> {
|
|
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");
|
}
|
|
@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 日期
|
*/
|
public Date parseDate(String dateStr, String format) {
|
Date date=null;
|
try {
|
DateFormat dateFormat = new SimpleDateFormat(format);
|
date = dateFormat.parse(dateStr);
|
date.setHours(1);
|
} catch (Exception e) {
|
|
}
|
return date;
|
}
|
|
}
|