java计算两个日期之间的工作日,要考虑法定节假日和周末
时间: 2023-10-14 20:22:40 浏览: 67
以下是 Java 计算两个日期之间的工作日(排除法定节假日和周末)的示例代码:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
public class WorkingDaysCalculator {
public static long getWorkingDays(LocalDate startDate, LocalDate endDate, List<LocalDate> holidays) {
long workingDays = 0;
LocalDate date = startDate;
while (date.isBefore(endDate)) {
if (date.getDayOfWeek() != DayOfWeek.SATURDAY && date.getDayOfWeek() != DayOfWeek.SUNDAY && !holidays.contains(date)) {
workingDays++;
}
date = date.plus(1, ChronoUnit.DAYS);
}
return workingDays;
}
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2021, 1, 1);
LocalDate endDate = LocalDate.of(2021, 1, 31);
List<LocalDate> holidays = new ArrayList<>();
holidays.add(LocalDate.of(2021, 1, 1));
holidays.add(LocalDate.of(2021, 1, 6));
holidays.add(LocalDate.of(2021, 1, 20));
long workingDays = getWorkingDays(startDate, endDate, holidays);
System.out.println("Number of working days between " + startDate + " and " + endDate + ": " + workingDays);
}
}
```
与前面的示例相比,这个示例增加了一个 `List<LocalDate> holidays` 参数来表示法定节假日的日期。在 `getWorkingDays` 方法中,我们使用 `while` 循环遍历两个日期之间的每一天,并使用 `getDayOfWeek` 方法来判断一周中的哪一天。如果这一天不是周六或周日,且不是法定节假日,则将其计为工作日。最终,我们将工作日数作为方法的返回值,并在 `main` 方法中打印出来。