使用java获取当前日期后几天内的工作日和节假日数
目前的思路是如果需要获得两日期间有多少个工作日和节假日,那么可以从中找到规律,两日期间的工作日数一定等于n * 5 + m(n为两日期间完整周的数,而m则是不完整周中工作日的数量),例如:如果要计算10月10日到10月22日之间的工作日数,那么两日期间完整周的数就为1,因此不完整周那么就只剩下6天,那么我们就只需要知道这6天(这六天可以是开始起的6天,也可以是最后6天)中到底哪几天是工作日就行了。
/*** 获取当前时间之后n日中有多少个工作日和节假日** @param startDay 当前日期* @param num后n日* @return* @throws Exception*/public static String getWorkDayStart(Date startDay, int num) throws Exception {Calendar calendar = Calendar.getInstance();calendar.setTime(startDay);calendar.add(Calendar.DATE, num);//节假日数int holidayNum = 0;//工作日数int workdayNum = 0;int number = (num + 1) % 7;if(number != 0){for(int i = 0;i < number;i++){if(calendar.get(Calendar.DAY_OF_WEEK) == 7 || calendar.get(Calendar.DAY_OF_WEEK) == 1){holidayNum++;}else {workdayNum++;}calendar.add(Calendar.DATE, -1);}}//当前未排除法定节假日和法定工作日。holidayNum = holidayNum + 2 * (num - number + 1) / 7;workdayNum = workdayNum + 5 * (num - number + 1) / 7;return holidayNum + "," + workdayNum;}