Java获取两个日期的差值,并且跳过节假日以及周六日
时间: 2024-11-12 21:46:57 浏览: 15
java如何获取两个日期的时间差
5星 · 资源好评率100%
在Java中,如果你需要计算两个日期之间的差值并排除周末(周六、周日)和法定假日,你可以使用`java.time`包下的`Period`类和`LocalDate`类。首先,你需要创建两个`LocalDate`对象代表你要计算的日期,然后创建一个工具类来判断某个日期是否为工作日。下面是一个示例:
```java
import java.time.LocalDate;
import java.time.Period;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DateUtils {
private static final List<LocalDate> holidays; // 假定这是一个包含假日的列表
static {
holidays = Arrays.asList(
LocalDate.of(2023, 1, 1), // 新年
LocalDate.of(2023, 5, 1), // 劳动节
// 添加更多假日...
);
}
public static long getWorkingDays(LocalDate startDate, LocalDate endDate) {
long totalDays = Period.between(startDate, endDate).getDays();
int workingDays = 0;
for (int i = startDate.toEpochDay(); i <= endDate.toEpochDay(); i++) {
LocalDate date = LocalDate.ofEpochDay(i);
if (!isWeekend(date) && !holidays.contains(date)) {
workingDays++;
}
}
return workingDays;
}
private static boolean isWeekend(LocalDate date) {
return date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY;
}
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2023, 4, 1);
LocalDate endDate = LocalDate.of(2023, 4, 30);
System.out.println("Working days between " + startDate + " and " + endDate + ": " + getWorkingDays(startDate, endDate));
}
}
```
在这个例子中,`getWorkingDays()`方法会计算两个日期之间的工作日数,通过遍历每个日期并检查其是否为工作日来实现。注意这个示例假设有一个静态`holidays`列表包含了假期日期。
阅读全文