Blame view

java110-utils/src/main/java/com/java110/utils/util/Java110Converter.java 3.88 KB
88e030b7   王彪总   init project
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
  package com.java110.utils.util;
  
  import org.springframework.cglib.core.Converter;
  
  import java.math.BigDecimal;
  import java.sql.Timestamp;
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.time.LocalDateTime;
  import java.time.ZoneId;
  import java.time.ZonedDateTime;
  import java.util.Date;
  
  /**
   * @ClassName Java110Converter
   * @Description TODO
   * @Author wuxw
   * @Date 2020/1/28 17:16
   * @Version 1.0
   * add by wuxw 2020/1/28
   **/
  public class Java110Converter implements Converter {
  
  
      @Override
      public Object convert(Object value, Class target, Object context) {
  
          return getValue(value, target);
      }
  
      public static Object getValue(Object value, Class target) {
  
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  
          if (value == null) {
              return value;
          }
          //1.0 String 转 Date
          if (value instanceof String && target == Date.class) {
              String date = (String) value;
              Date newDate = null;
              SimpleDateFormat strdf = null;
              if (date.contains(":")) {
                  strdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
              } else {
                  strdf = new SimpleDateFormat("yyyy-MM-dd");
              }
              try {
                  newDate = strdf.parse(date);
              } catch (ParseException e) {
                  e.printStackTrace();
              }
              return newDate;
          }
  
          //2.0 Date 转 Date
          if (value instanceof Date && target == Date.class) {
              return value;
          }
  
          //2.0 Date 转 Date
          if (value instanceof LocalDateTime && target == Date.class) {
              ZoneId zoneId = ZoneId.systemDefault();
              ZonedDateTime zonedDateTime = ((LocalDateTime)value).atZone(zoneId);
              Date date = Date.from(zonedDateTime.toInstant());
              return date;
          }
  
  
          // 3.0 Date 转 String
          if (value instanceof Date && target == String.class) {
              Date date = (Date) value;
              String newDate = null;
              try {
                  newDate = sdf.format(date);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return newDate;
          }
          // 3.0 Timestamp 转 String
          if (value instanceof Timestamp && target == String.class) {
              Date date = new Date(((Timestamp) value).getTime());
              String newDate = null;
              try {
                  newDate = sdf.format(date);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return newDate;
          }
  
          if (value instanceof BigDecimal && target == String.class) {
              BigDecimal bd = (BigDecimal) value;
              return bd.toPlainString();
          }
          if (target == String.class) {
              return String.valueOf(value);
          }
  
          if (target == int.class || target == Integer.class) {
              if(StringUtil.isNullOrNone(value)){
                  return 0;
              }
              return Integer.parseInt(String.valueOf(value));
          }
  
          if (target == long.class || target == Long.class) {
              if(StringUtil.isNullOrNone(value)){
                  return 0;
              }
              return Long.parseLong(String.valueOf(value));
          }
  
          if (target == double.class || target == Double.class) {
              if(StringUtil.isNullOrNone(value)){
                  return 0;
              }
              return Double.parseDouble(String.valueOf(value));
          }
  
          if (target == String[].class) {
              return String.valueOf(value).split(",");
          }
  
          //1.0 String 转 Date
          if (value instanceof String && target == boolean.class) {
              String bl = (String) value;
              if ("true".equals(bl)) {
                  return true;
              }
              return false;
          }
  
          return value;
      }
  }