工具类,Java转换

import com.tax.cloud.core.exception.DateException;
import com.tax.cloud.core.model.DateModel;
import com.tax.cloud.core.model.Rest;
import com.tax.cloud.core.util.StringUtils;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    public static final String YYYY_MM_DD_SLASH = "yyyy/MM/dd";
    public static final String YYYY_MM_DD_HH_MM_DD_SLASH = "yyyy/MM/dd HH:mm:ss";
    public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    public static final String YYYYMMDD = "yyyyMMdd";
    public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
    private static final String[] WEEK_DAYS = new String[]{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

    public DateUtils() {
    }

    public static String DateToStringFormat(Date date, String format) {
        if(StringUtils.isNull(date)) {
            return null;
        } else {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        }
    }

    public static Date StringToDateFormat(String date, String format) {
        if(StringUtils.isNull(date)) {
            return null;
        } else {
            Date d = null;

            try {
                SimpleDateFormat e = new SimpleDateFormat(format);
                d = e.parse(date);
            } catch (ParseException var4) {
                var4.printStackTrace();
            }

            return d;
        }
    }

    public static String getYYmm() {
        String year = DateToStringFormat(getSystemDate(), "yyyy");
        String month = DateToStringFormat(getSystemDate(), "MM");
        return StringUtils.concat("", new String[]{StringUtils.substring(year, year.length() - 2), month});
    }

    public static Date getSystemDate() {
        return new Date();
    }

    public static long getSystemDateDifference(Date date) {
        if(StringUtils.isNull(date)) {
            return 0L;
        } else {
            Date systemDate = getSystemDate();
            long days = (systemDate.getTime() - date.getTime()) / 86400000L;
            return days;
        }
    }

    public static long getDifference(Date startDate, Date endDate) throws DateException {
        if(endDate.compareTo(startDate) == -1) {
            throw new DateException("开始时间不能小于结束时间");
        } else {
            BigDecimal days = (new BigDecimal(endDate.getTime() - startDate.getTime())).divide(new BigDecimal(86400000), 0, 4);
            System.out.println(days);
            return days.longValue();
        }
    }

    public static String getWeek(Date date) {
        if(StringUtils.isNull(date)) {
            return null;
        } else {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int w = cal.get(7) - 1;
            return WEEK_DAYS[w];
        }
    }

    public static Date getEndDate(Date startDate, int days) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(startDate);
        cal.add(5, days);
        return cal.getTime();
    }

    public static String timePass(Date date, int level) {
        if(date == null) {
            return null;
        } else {
            String result = null;
            String res = DateToStringFormat(date, "yyyy-MM-dd");
            if(level == 0) {
                return res;
            } else {
                long time = 0L;
                time = System.currentTimeMillis() - date.getTime();
                if(time <= 0L) {
                    return "刚才";
                } else {
                    if(time < 60000L) {
                        result = time / 1000L + "秒前";
                        if(level < 1) {
                            return res;
                        }
                    } else if(time < 3600000L) {
                        result = time / 1000L / 60L + "分钟前";
                        if(level < 2) {
                            return res;
                        }
                    } else if(time < 86400000L) {
                        result = time / 1000L / 60L / 60L + "小时前";
                        if(level < 3) {
                            return res;
                        }
                    } else if(time < 1296000000L) {
                        result = time / 1000L / 60L / 60L / 24L + "天前";
                        if(level < 3) {
                            return res;
                        }
                    } else {
                        result = res;
                    }

                    return result;
                }
            }
        }
    }

    public static BigDecimal calculationDays(Rest rest, Date startTime, Date endTime, DateUtils.RestType restType) throws DateException {
        BigDecimal total = new BigDecimal(0);
        if(StringUtils.isEquals(DateUtils.RestType.LEAVE.getType(), restType.getType())) {
            DateModel startModel = getRestDate(rest, startTime);
            DateModel endModel = getRestDate(rest, endTime);
            Calendar calendar = Calendar.getInstance();
            if(startTime.compareTo(startModel.getEndMorningTime()) >= 0 && startTime.compareTo(startModel.getStartAfternoonTime()) <= 0) {
                startTime = startModel.getStartAfternoonTime();
            }

            if(endTime.compareTo(endModel.getEndMorningTime()) >= 0 && endTime.compareTo(endModel.getStartAfternoonTime()) <= 0) {
                endTime = endModel.getEndMorningTime();
            }

            if(startTime.compareTo(startModel.getStartMorningTime()) == -1) {
                startTime = startModel.getStartMorningTime();
            }

            if(startTime.compareTo(startModel.getEndAfternoonTime()) == 1) {
                calendar.setTime(startModel.getStartMorningTime());
                calendar.add(5, 1);
                startTime = calendar.getTime();
            }

            if(endTime.compareTo(endModel.getEndAfternoonTime()) == 1) {
                endTime = endModel.getEndAfternoonTime();
            }

            if(endTime.compareTo(endModel.getStartMorningTime()) == -1) {
                calendar.setTime(endModel.getEndAfternoonTime());
                calendar.add(5, -1);
                endTime = calendar.getTime();
            }

            long days = getDifference(startTime, endTime);
            total = BigDecimal.valueOf(endTime.getTime() - startTime.getTime()).divide(BigDecimal.valueOf(3600000L), 1, 1);
            total = total.subtract((new BigDecimal(24)).subtract(rest.getWorkHour()).multiply(new BigDecimal(days)));
            startModel = getRestDate(rest, startTime);
            endModel = getRestDate(rest, endTime);
            if(startTime.compareTo(startModel.getEndMorningTime()) == -1 && endTime.compareTo(endModel.getStartAfternoonTime()) == 1) {
                total = total.subtract(rest.getNoonHour());
            }
        } else if(StringUtils.isEquals(DateUtils.RestType.OVERTIME.getType(), restType.getType())) {
            if(endTime.compareTo(startTime) == -1) {
                throw new DateException("开始时间不能小于结束时间");
            }

            total = BigDecimal.valueOf(endTime.getTime() - startTime.getTime()).divide(BigDecimal.valueOf(3600000L), 1, 1);
        }

        return total;
    }

    public static void main(String[] args) {
        Rest rest = new Rest("08:30", "11:30", "13:00", "17:30");

        try {
            BigDecimal e = calculationDays(rest, StringToDateFormat("2017-11-13 08:30:00", "yyyy-MM-dd HH:mm:ss"), StringToDateFormat("2017-11-13 17:30:00", "yyyy-MM-dd HH:mm:ss"), DateUtils.RestType.LEAVE);
            System.out.println(e);
        } catch (DateException var3) {
            var3.printStackTrace();
        }

    }

    private static DateModel getRestDate(Rest rest, Date date) {
        Date startMorningTime = StringToDateFormat(DateToStringFormat(date, "yyyy-MM-dd") + " " + rest.getStartMorningTime() + ":00", "yyyy-MM-dd HH:mm:ss");
        Date endMorningTime = StringToDateFormat(DateToStringFormat(date, "yyyy-MM-dd") + " " + rest.getEndMorningTime() + ":00", "yyyy-MM-dd HH:mm:ss");
        Date startAfternoonTime = StringToDateFormat(DateToStringFormat(date, "yyyy-MM-dd") + " " + rest.getStartAfternoonTime() + ":00", "yyyy-MM-dd HH:mm:ss");
        Date endAfternoonTime = StringToDateFormat(DateToStringFormat(date, "yyyy-MM-dd") + " " + rest.getEndAfternoonTime() + ":00", "yyyy-MM-dd HH:mm:ss");
        return new DateModel(startMorningTime, endMorningTime, startAfternoonTime, endAfternoonTime);
    }

    public static enum RestType {
        LEAVE("0"),
        OVERTIME("1");

        private String type;

        private RestType() {
        }

        private RestType(String type) {
            this.type = type;
        }

        public String getType() {
            return this.type;
        }

        public void setType(String type) {
            this.type = type;
        }
    }
 
 
 
 
 
 
 
public class DateException extends Exception { private static final long serialVersionUID = 5004274153680922246L; public DateException(String msg) { super(msg); } public DateException() { } }

 

 

 

 
 
 
 
import java.util.Date; public class DateModel { private Date startMorningTime; private Date endMorningTime; private Date startAfternoonTime; private Date endAfternoonTime; DateModel() { } public DateModel(Date startMorningTime, Date endMorningTime, Date startAfternoonTime, Date endAfternoonTime) { this.startMorningTime = startMorningTime; this.endMorningTime = endMorningTime; this.startAfternoonTime = startAfternoonTime; this.endAfternoonTime = endAfternoonTime; } public Date getStartMorningTime() { return this.startMorningTime; } public void setStartMorningTime(Date startMorningTime) { this.startMorningTime = startMorningTime; } public Date getEndMorningTime() { return this.endMorningTime; } public void setEndMorningTime(Date endMorningTime) { this.endMorningTime = endMorningTime; } public Date getStartAfternoonTime() { return this.startAfternoonTime; } public void setStartAfternoonTime(Date startAfternoonTime) { this.startAfternoonTime = startAfternoonTime; } public Date getEndAfternoonTime() { return this.endAfternoonTime; } public void setEndAfternoonTime(Date endAfternoonTime) { this.endAfternoonTime = endAfternoonTime; }

 

 

 

 
 
 
 
import java.math.BigDecimal; public class Rest { private String startMorningTime; private String endMorningTime; private String startAfternoonTime; private String endAfternoonTime; private BigDecimal workHour = new BigDecimal(8); private BigDecimal noonHour = new BigDecimal(1); public Rest(String startMorningTime, String endMorningTime, String startAfternoonTime, String endAfternoonTime, BigDecimal workHour, BigDecimal noonHour) { this.startMorningTime = startMorningTime; this.endMorningTime = endMorningTime; this.startAfternoonTime = startAfternoonTime; this.endAfternoonTime = endAfternoonTime; this.workHour = workHour; this.noonHour = noonHour; } public Rest(String startMorningTime, String endMorningTime, String startAfternoonTime, String endAfternoonTime) { this.startMorningTime = startMorningTime; this.endMorningTime = endMorningTime; this.startAfternoonTime = startAfternoonTime; this.endAfternoonTime = endAfternoonTime; } Rest() { } public String getStartMorningTime() { return this.startMorningTime; } public void setStartMorningTime(String startMorningTime) { this.startMorningTime = startMorningTime; } public String getEndMorningTime() { return this.endMorningTime; } public void setEndMorningTime(String endMorningTime) { this.endMorningTime = endMorningTime; } public String getStartAfternoonTime() { return this.startAfternoonTime; } public void setStartAfternoonTime(String startAfternoonTime) { this.startAfternoonTime = startAfternoonTime; } public String getEndAfternoonTime() { return this.endAfternoonTime; } public void setEndAfternoonTime(String endAfternoonTime) { this.endAfternoonTime = endAfternoonTime; } public BigDecimal getWorkHour() { return this.workHour; } public void setWorkHour(BigDecimal workHour) { this.workHour = workHour; } public BigDecimal getNoonHour() { return this.noonHour; } public void setNoonHour(BigDecimal noonHour) { this.noonHour = noonHour; } }

 

 

 

 
 
 
import com.google.gson.GsonBuilder; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class StringUtils { public StringUtils() { } public static boolean isNull(Object obj) { return !(obj instanceof String)?obj == null:null == obj || "".equals(obj); } public static boolean isNotNull(Object object) { return !isNull(object); } public static boolean isEquals(String str1, String str2) { return str1 == null?false:str1.equals(str2); } public static String substring(String str, int sLength) { return isNull(str)?null:str.substring(sLength); } public static String substring(String str, int sLength, int eLength) { return isNull(str)?null:str.substring(sLength, eLength); } public static String[] split(String str, String regex) { return isNull(str)?null:str.split(regex); } public static List<String> splitToList(String str, String regex) { if(isNull(str)) { return null; } else { ArrayList resultList = new ArrayList(); List resultObject = arrayToList(str.split(regex)); Iterator i$ = resultObject.iterator(); while(i$.hasNext()) { Object obj = i$.next(); resultList.add(obj.toString()); } return resultList; } } public static List<Object> arrayToList(Object[] strArray) { return isNull(strArray)?null:new ArrayList(Arrays.asList(strArray)); } public static String join(Object[] arrays, String regex) { if(isNull(arrays)) { return null; } else { StringBuffer str = new StringBuffer(); for(int i = 0; i < arrays.length; ++i) { str = arrays.length - 1 == i?str.append(arrays[i]):str.append(arrays[i] + regex); } return str.toString(); } } public static String concat(String regex, String... str) { Object[] object = new Object[str.length]; for(int i = 0; i < str.length; ++i) { object[i] = str[i]; } return join(object, regex); } public static <T> T stringToBena(String json, Class<T> bean) { return isNull(json)?null:(new GsonBuilder()).create().fromJson(json, bean); } /** @deprecated */  @Deprecated public static String arrayToString(Object[] arrays, String regex) { String str = ""; for(int i = 0; i < arrays.length; ++i) { str = str + concat(regex, new String[]{arrays[i].toString()}); } return str; } public static void beanCopy(Object obj1, Object obj2) { Class cls1 = obj1.getClass(); Class cls2 = obj2.getClass(); Field[] fields1 = cls1.getDeclaredFields(); ArrayList fieldList = new ArrayList(Arrays.asList(fields1)); Field[] fields2; if(isNotNull(cls1.getSuperclass())) { fields2 = cls1.getSuperclass().getDeclaredFields(); Field[] i$ = fields2; int field1 = fields2.length; for(int arr$ = 0; arr$ < field1; ++arr$) { Field len$ = i$[arr$]; fieldList.add(len$); } } fields2 = cls2.getDeclaredFields(); Iterator var15 = fieldList.iterator(); while(var15.hasNext()) { Field var16 = (Field)var15.next(); var16.setAccessible(true); Field[] var17 = fields2; int var18 = fields2.length; for(int i$1 = 0; i$1 < var18; ++i$1) { Field field2 = var17[i$1]; field2.setAccessible(true); if(isEquals(var16.getName(), field2.getName()) && isEquals(var16.getType().getName(), field2.getType().getName())) { try { field2.set(obj2, var16.get(obj1)); } catch (IllegalAccessException var14) { var14.printStackTrace(); } } } } } public static Map<String, String> transBean2Map(Object obj) { HashMap returnMap = new HashMap(); Class cls = obj.getClass(); Field[] fields = cls.getDeclaredFields(); ArrayList fieldList = new ArrayList(Arrays.asList(fields)); if(isNotNull(cls.getSuperclass())) { Field[] i$ = cls.getSuperclass().getDeclaredFields(); Field[] field = i$; int e = i$.length; for(int i$1 = 0; i$1 < e; ++i$1) { Field field1 = field[i$1]; fieldList.add(field1); } } Iterator var11 = fieldList.iterator(); while(var11.hasNext()) { Field var12 = (Field)var11.next(); var12.setAccessible(true); try { String var13 = var12.getType().getName(); byte var14 = -1; switch(var13.hashCode()) { case 1195259493: if(var13.equals("java.lang.String")) { var14 = 0; } default: switch(var14) { case 0: if(isNotNull(var12.get(obj))) { returnMap.put(var12.getName().toString(), var12.get(obj).toString()); } } } } catch (IllegalAccessException var10) { var10.printStackTrace(); } } return returnMap; } public static String listToString(List<String> stringList, String regex) { if(isNull(stringList)) { return null; } else { Object result = null; Object[] object = new Object[stringList.size()]; for(int i = 0; i < stringList.size(); ++i) { object[i] = stringList.get(i); } return join(object, regex); } }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值