我正在尝试通过基于数据库中的自定义假期日历添加特定天数来计算下一个工作日。
例如:
-今天:3月9日
-假期:3月10日,3月12日,3月13日
-添加天数:5
结果应该吸引我:第17场比赛
有没有简单的方法可以在Java中处理此问题?
我写了以下代码
public class TestNextWorkinDay {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
TestNextWorkinDay d = new TestNextWorkinDay();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date fDate = sdf.parse("2019-04-09");
//adding holidays to List
String date1="2019-04-10";
String date2="2019-04-12";
String date3="2019-04-13";
ArrayList<String> dates = new ArrayList<>();
dates.add(date1);
dates.add(date2);
dates.add(date3);
String dueDate = d.getNextWorkingDay(fDate ,5, dates);
System.out.println("due Date " + dueDate);
}
public String getNextWorkingDay(Date fDate,int bday , ArrayList<String> dates){
Calendar cal = Calendar.getInstance();
cal.setTime(fDate);
SimpleDateFormat fdate = new SimpleDateFormat("yyyy-MM-dd");
while(bday > 0){
cal.add(Calendar.DAY_OF_MONTH, 1);
String date= fdate.format(cal.getTime());
if(checkIfNonWorkingDay(date , dates)){
bday--;
}
}
return fdate.format(cal.getTime());
}
public boolean checkIfNonWorkingDay(String cal , ArrayList<String> dates){
if(dates.contains(cal)){
return false;
}
return true;
}
}