1.说明:
获取n个工作日后的日期(包含法定节假日、双休日、节后补班),需要在数据库手动入库当年的法定节假日及节假日调休补班。(也可写在配置文件中读取)
2.工具类代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 用于查询n个工作日(包含法定节假日、双休日、调休)后的日期
* @author ywh
* @version 创建时间:2019年4月24日 下午5:50:29
*/
public class HolidayUtils {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/**
* 用于判断n个工作日(排除节假日、周六日包含节后补班数据)后的日期
*
* @author ywh
* @version 创建时间:2019年4月24日 上午11:24:58
* @param list 节假日数据源
* @param weekDayList 节后补班数据源
* @param today 计算开始时间
* @param num 多少个工作日 根据需要自行安排
* @return
* @throws ParseException
*/
@SuppressWarnings("deprecation")
public static Date getScheduleActiveDate(List list,List weekDayList, Date today,int num) throws ParseException {
String today1 = DateUtils.parseDate(today, "yyyy-MM-dd");
Date tomorrow = null;
int delay = 1;
while(delay <= num){
tomorrow = getTomorrow(today);
//当前日期+1即tomorrow,判断是否是节假日,同时要判断是否是周末,都不是则将scheduleActiveDate日期+1,直到循环num次即可------不是节假日不是周末并且不是补班
if((!isWeekend(sdf.format(tomorrow)) && !isHoliday(sdf.format(tomorrow),list)) || isWorkWeekDay(sdf.format(tomorrow),weekDayList)){
if(isWorkWeekD