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; } }
计算2个日期之间的相隔的工作日不算第一天
最新推荐文章于 2022-07-25 17:26:37 发布