时间校验

获取时间差(一)--年份、月份

public static int getYearsByTwoDates(Date date1,Date date2){
        Calendar date1Ca = Calendar.getInstance();
        date1Ca.setTime(date1);
        Calendar date2Ca = Calendar.getInstance();
        date2Ca.setTime(date2);
        if(date2Ca.getTimeInMillis() < date1Ca.getTimeInMillis()) return -1;
        int beginYear = date1Ca.get(Calendar.YEAR);
        int endYear = date2Ca.get(Calendar.YEAR);
        int beginMonth = date1Ca.get(Calendar.MONTH)+1;
        int endMonth = date2Ca.get(Calendar.MONTH)+1;
        int beginDay = date1Ca.get(Calendar.DAY_OF_MONTH);
        int endDay = date2Ca.get(Calendar.DAY_OF_MONTH);
        int yearInterval = endYear - beginYear;
        if(endMonth < beginMonth){
            yearInterval--;
        }
        boolean beginBool = DateUtil.isMonthEnd(beginYear,beginMonth,beginDay);
        boolean endBool = DateUtil.isMonthEnd(endYear,endMonth,endDay);
        if(endMonth == beginMonth){
            if(beginBool && endBool){
                return yearInterval;
            }else if(!beginBool && endBool &&  endDay <= beginDay){
                return yearInterval;
            }else if(!beginBool && !endBool &&  endDay == beginDay){
                return yearInterval;                
            }else{
                return -1;
            }
        }else{
            return -1;
        }   
    }
public static int getMonthsByTwoDates(Date date1,Date date2){
        Calendar date1Ca = Calendar.getInstance();
        date1Ca.setTime(date1);
        Calendar date2Ca = Calendar.getInstance();
        date2Ca.setTime(date2);
        if(date2Ca.getTimeInMillis() < date1Ca.getTimeInMillis()) return -1;
        int beginYear = date1Ca.get(Calendar.YEAR);
        int endYear = date2Ca.get(Calendar.YEAR);
        int beginMonth = date1Ca.get(Calendar.MONTH)+1;
        int endMonth = date2Ca.get(Calendar.MONTH)+1;
        int beginDay = date1Ca.get(Calendar.DAY_OF_MONTH);
        int endDay = date2Ca.get(Calendar.DAY_OF_MONTH);
        boolean beginBool = DateUtil.isMonthEnd(beginYear,beginMonth,beginDay);
        boolean endBool = DateUtil.isMonthEnd(endYear,endMonth,endDay);
        // 获取年的差值 假设 d2 = 2012-4-30 d1 = 2012-3-31
        int yearInterval = endYear - beginYear;
        // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
        if(yearInterval == 0 || yearInterval ==1){
            if(endMonth < beginMonth || endMonth == beginMonth && ((endDay < beginDay) && (!beginBool || !endBool))) yearInterval --;
            // 获取月数差值
            int monthInterval = (endMonth + 12) - beginMonth ;
            if(endDay < beginDay && (!beginBool && !endBool)) monthInterval --;
            monthInterval %= 12;
            int month = yearInterval * 12 + monthInterval;
            
            if(beginBool && endBool){
                return month;
            }else if(!beginBool && endBool &&  endDay <= beginDay){
                return month;
            }else if(!beginBool && !endBool &&  endDay == beginDay){
                return month;
            }else{
                return -1;
            }
        }
        return -1;
        
        
    }

 


获取时间差(二)

public static int getYearsByTwoDates2(Date date1,Date date2){
        Calendar date1Ca = Calendar.getInstance();
        date1Ca.setTime(date1);
        Calendar date2Ca = Calendar.getInstance();
        date2Ca.setTime(date2);
        date1Ca.add(Calendar.MONTH, 12);
        if(date2Ca.getTime().getTime() >= date1Ca.getTime().getTime()){
            return 1;
        }else{
            return -1;
        }
    }

 

 

判断当前日是否是当月最后一天方法

public static boolean isMonthEnd(int year,int month,int day) {
        switch(month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if (day == 31) {
                    return true;
                }
                return false;
            case 4:
            case 6:
            case 9:
            case 11:
                if (day == 30) {
                    return true;
                }
                return false;
            case 2:
                if (isLeapYear(year) && day == 29) {
                    return true;
                }
                else if (!isLeapYear(year) && day == 28) {
                    return true;
                }
                return false;
            default:
                return false;
        }
        }
    //判断是否是闰年
    public    static boolean isLeapYear(int year) {
            if(year%4 ==0 || year%400 ==0){
                return true;
            }else{
                return false;
            }
        } 

 

posted @ 2017-07-25 10:27  此时的人生  阅读(200)  评论(0编辑  收藏  举报