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; } }