import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class WorkDaysCalculator {
public static int calculateWorkDays(LocalDate startDate, LocalDate endDate,
List<LocalDate> excludedDates,List<LocalDate> containsDates) {
int workDays = 0;
LocalDate date = startDate;
while (!date.isAfter(endDate)) {
if (isWorkDay(excludedDates, date) || containsDates.contains(date)) {
workDays++;
System.out.println(date);
}
date = date.plusDays(1);
}
return workDays;
}
private static boolean isWorkDay(List<LocalDate> excludedDates, LocalDate date) {
return date.getDayOfWeek() != DayOfWeek.SATURDAY &&
date.getDayOfWeek() != DayOfWeek.SUNDAY &&
!excludedDates.contains(date);
}
public static void workDays(){
try {
LocalDate startDate = LocalDate.of(2024, 2, 1);
LocalDate endDate = LocalDate.of(2024, 3, 8);
List<LocalDate> excludedDates = new ArrayList<>();
excludedDates.add(LocalDate.of(2024, 2, 12));
excludedDates.add(LocalDate.of(2024, 2, 13));
excludedDates.add(LocalDate.of(2024, 2, 14));
excludedDates.add(LocalDate.of(2024, 2, 15));
excludedDates.add(LocalDate.of(2024, 2, 16));
List<LocalDate> containsDates = new ArrayList<>();
containsDates.add(LocalDate.of(2024, 2, 4));
containsDates.add(LocalDate.of(2024, 2, 18));
int workDays = calculateWorkDays(startDate, endDate, excludedDates, containsDates);
System.out.println();
System.out.println( "从"+startDate + " 到 " + endDate + "的工作日有: " + workDays+"天");
}catch (Exception e){
System.out.println("无效日期!!!");
}
}
public static void main(String[] args) {
workDays();
}
}