DateConverterConfig.java
张创琦
package com.zcq.util;import com.fasterxml.jackson.databind.JavaType;import com.fasterxml.jackson.databind.type.TypeFactory;import com.fasterxml.jackson.databind.util.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;@Componentpublic class DateConverterConfig implements Converter<String, Date> {private static final List<String> formats = new ArrayList<>(4);static {formats.add("yyyy-MM");formats.add("yyyy-MM-dd");formats.add("yyyy-MM-dd hh:mm");formats.add("yyyy-MM-dd hh:mm:ss");}@Overridepublic Date convert(String source) {String value = source.trim();if("".equals(value)) {return null;}if (source.matches("^\\d{4}-\\d{1,2}$")) {return parseDate(source, formats.get(0));} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {return parseDate(source, formats.get(1));} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {return parseDate(source, formats.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, formats.get(3));} else {throw new IllegalArgumentException("Invalid boolean value '" + source + "'");}}// 多了两个实现的方法,到时候需要调试看看能否运行成功@Overridepublic JavaType getInputType(TypeFactory typeFactory) {return null;}@Overridepublic JavaType getOutputType(TypeFactory typeFactory) {return null;}/*** 格式化日期* @param dateStr 字符型日期* @param format 格式* @return Date 日期*/public Date parseDate(String dateStr, String format) {Date date = null;try {DateFormat dateFormat = new SimpleDateFormat(format);date = dateFormat.parse(dateStr);} catch (Exception e) {}return date;}}
