java 实现请假开始时间、请假结束时间算出天数,节假日不算
时间: 2023-11-14 14:29:47 浏览: 47
以下是 Java 实现请假开始时间、请假结束时间算出天数,节假日不算的示例代码:
```java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.Set;
public class LeaveDaysCalculator {
private Set<LocalDate> holidays;
public LeaveDaysCalculator() {
holidays = new HashSet<>();
// 将节假日加入到集合中
holidays.add(LocalDate.of(2021, 10, 1));
holidays.add(LocalDate.of(2021, 10, 2));
holidays.add(LocalDate.of(2021, 10, 3));
holidays.add(LocalDate.of(2021, 10, 4));
holidays.add(LocalDate.of(2021, 10, 5));
holidays.add(LocalDate.of(2021, 10, 6));
holidays.add(LocalDate.of(2021, 10, 7));
}
public int calculateLeaveDays(LocalDate startDate, LocalDate endDate) {
int leaveDays = (int) ChronoUnit.DAYS.between(startDate, endDate) + 1;
// 排除节假日
for (LocalDate date = startDate; date.isBefore(endDate.plusDays(1)); date = date.plusDays(1)) {
if (date.getDayOfWeek().getValue() >= 6 || holidays.contains(date)) {
leaveDays--;
}
}
return leaveDays;
}
public static void main(String[] args) {
LeaveDaysCalculator calculator = new LeaveDaysCalculator();
LocalDate startDate = LocalDate.of(2021, 10, 8);
LocalDate endDate = LocalDate.of(2021, 10, 15);
int leaveDays = calculator.calculateLeaveDays(startDate, endDate);
System.out.println("请假天数:" + leaveDays);
}
}
```
在示例代码中,我们使用了 Java 8 中的 LocalDate 类来处理日期,使用 ChronoUnit.DAYS.between() 方法计算请假天数。在计算请假天数时,我们遍历请假期间的每一天,如果该天是周六、周日或者节假日,则将请假天数减一。