DateConverterConfig.java

张创琦

  1. package com.zcq.util;
  2. import com.fasterxml.jackson.databind.JavaType;
  3. import com.fasterxml.jackson.databind.type.TypeFactory;
  4. import com.fasterxml.jackson.databind.util.Converter;
  5. import org.springframework.stereotype.Component;
  6. import java.text.DateFormat;
  7. import java.text.SimpleDateFormat;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.List;
  11. @Component
  12. public class DateConverterConfig implements Converter<String, Date> {
  13. private static final List<String> formats = new ArrayList<>(4);
  14. static {
  15. formats.add("yyyy-MM");
  16. formats.add("yyyy-MM-dd");
  17. formats.add("yyyy-MM-dd hh:mm");
  18. formats.add("yyyy-MM-dd hh:mm:ss");
  19. }
  20. @Override
  21. public Date convert(String source) {
  22. String value = source.trim();
  23. if("".equals(value)) {
  24. return null;
  25. }
  26. if (source.matches("^\\d{4}-\\d{1,2}$")) {
  27. return parseDate(source, formats.get(0));
  28. } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
  29. return parseDate(source, formats.get(1));
  30. } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
  31. return parseDate(source, formats.get(2));
  32. } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
  33. return parseDate(source, formats.get(3));
  34. } else {
  35. throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
  36. }
  37. }
  38. // 多了两个实现的方法,到时候需要调试看看能否运行成功
  39. @Override
  40. public JavaType getInputType(TypeFactory typeFactory) {
  41. return null;
  42. }
  43. @Override
  44. public JavaType getOutputType(TypeFactory typeFactory) {
  45. return null;
  46. }
  47. /**
  48. * 格式化日期
  49. * @param dateStr 字符型日期
  50. * @param format 格式
  51. * @return Date 日期
  52. */
  53. public Date parseDate(String dateStr, String format) {
  54. Date date = null;
  55. try {
  56. DateFormat dateFormat = new SimpleDateFormat(format);
  57. date = dateFormat.parse(dateStr);
  58. } catch (Exception e) {
  59. }
  60. return date;
  61. }
  62. }