wuxw
2024-09-12 7935724516cb699835da888d59cd5b7bec5c6049
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;
    }
}