计算2个日期之间的相隔的工作日不算第一天

来源:互联网 发布:ip域名查询 编辑:程序博客网 时间:2024/05/22 10:27
package com.example.domain;import java.util.Calendar;import java.util.Date;public class TestDateWorkingTime {    public int fixTime(Date start , Date end ){        Calendar cal_start = Calendar.getInstance();        Calendar cal_end = Calendar.getInstance();        cal_start.setTime(start);        cal_end.setTime(end);        return   getWorkingDay(cal_start, cal_end);    }    /**     * 计算2个日期之间的相隔天数     *     * @param d1     * @param d2     * @return     */    public int getWorkingDay(java.util.Calendar d1, java.util.Calendar d2) {        int result = -1;        if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end            return 0;        }        int betweendays = getDaysBetween(d1, d2);        int charge_date = 0;        int charge_start_date = 0;//开始日期的日期偏移量        int charge_end_date = 0;//结束日期的日期偏移量        // 日期不在同一个日期内        int stmp;        int etmp;        stmp = 7 - d1.get(Calendar.DAY_OF_WEEK);        etmp = 7 - d2.get(Calendar.DAY_OF_WEEK);        if (stmp != 0 && stmp != 6) {// 开始日期为星期六和星期日时偏移量为0            charge_start_date = stmp - 1;        }        if (etmp != 0 && etmp != 6) {// 结束日期为星期六和星期日时偏移量为0            charge_end_date = etmp - 1;        }//  }        result = (getDaysBetween(this.getNextMonday(d1), this.getNextMonday(d2)) / 7)                * 5 + charge_start_date - charge_end_date;        //System.out.println("charge_start_date>" + charge_start_date);        //System.out.println("charge_end_date>" + charge_end_date);        //System.out.println("between day is-->" + betweendays);        return result;    }    public int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2) {        if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end            java.util.Calendar swap = d1;            d1 = d2;            d2 = swap;        }        int days = d2.get(java.util.Calendar.DAY_OF_YEAR)                - d1.get(java.util.Calendar.DAY_OF_YEAR);        int y2 = d2.get(java.util.Calendar.YEAR);        if (d1.get(java.util.Calendar.YEAR) != y2) {            d1 = (java.util.Calendar) d1.clone();            do {                days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);                d1.add(java.util.Calendar.YEAR, 1);            } while (d1.get(java.util.Calendar.YEAR) != y2);        }        return days;    }    public Calendar getNextMonday(Calendar date) {        Calendar result = null;        result = date;        do {            result = (Calendar) result.clone();            result.add(Calendar.DATE, 1);        } while (result.get(Calendar.DAY_OF_WEEK) != 2);        return result;    }}
原创粉丝点击