DateConverterConfig.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.api.base.config;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import org.springframework.core.convert.converter.Converter;
  5. import org.springframework.lang.Nullable;
  6. import org.springframework.stereotype.Component;
  7. import java.text.DateFormat;
  8. import java.text.SimpleDateFormat;
  9. import java.util.ArrayList;
  10. import java.util.Date;
  11. import java.util.List;
  12. @Component
  13. public class DateConverterConfig implements Converter<String, Date> {
  14. private Logger logger = LoggerFactory.getLogger(this.getClass());
  15. private static final List<String> formarts = new ArrayList<>(4);
  16. static{
  17. formarts.add("yyyy-MM");
  18. formarts.add("yyyy-MM-dd");
  19. formarts.add("yyyy-MM-dd hh:mm");
  20. formarts.add("yyyy-MM-dd hh:mm:ss");
  21. }
  22. @Nullable
  23. @Override
  24. public Date convert(String source) {
  25. String value = source.trim();
  26. if ("".equals(value)) {
  27. return null;
  28. }
  29. if(source.matches("^\\d{4}-\\d{1,2}$")){
  30. return parseDate(source, formarts.get(0));
  31. }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
  32. return parseDate(source, formarts.get(1));
  33. }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
  34. return parseDate(source, formarts.get(2));
  35. }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
  36. return parseDate(source, formarts.get(3));
  37. }else {
  38. throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
  39. }
  40. }
  41. /**
  42. * 格式化日期
  43. * @param dateStr String 字符型日期
  44. * @param format String 格式
  45. * @return Date 日期
  46. */
  47. private Date parseDate(String dateStr, String format) {
  48. Date date=null;
  49. try {
  50. DateFormat dateFormat = new SimpleDateFormat(format);
  51. date = dateFormat.parse(dateStr);
  52. } catch (Exception e) {
  53. logger.error("日期转换出错",e);
  54. }
  55. return date;
  56. }
  57. }