在Java開發(fā)中,經常會遇到需要跳過周末和法定節(jié)假日的需求。下面介紹兩種方法實現(xiàn)。
方法1:通過自定義日期工具類實現(xiàn)
public class DateUtils { private static final Set<LocalDate> holidays = new HashSet(); // 初始化法定節(jié)假日 static { holidays.add(LocalDate.of(2021, 1, 1)); // 元旦節(jié) holidays.add(LocalDate.of(2021, 4, 4)); // 清明節(jié) holidays.add(LocalDate.of(2021, 5, 1)); // 勞動節(jié) holidays.add(LocalDate.of(2021, 6, 14)); // 端午節(jié) holidays.add(LocalDate.of(2021, 9, 21)); // 中秋節(jié) holidays.add(LocalDate.of(2021, 10, 1)); // 國慶節(jié) holidays.add(LocalDate.of(2021, 10, 2)); // 國慶節(jié) holidays.add(LocalDate.of(2021, 10, 3)); // 國慶節(jié) } // 是否為法定節(jié)假日 public static boolean isHoliday(LocalDate date) { if (date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY) { return true; } if (holidays.contains(date)) { return true; } return false; } // 獲取下一個工作日 public static LocalDate getNextWorkingDay(LocalDate date) { do { date = date.plusDays(1); } while (isHoliday(date)); return date; } }
使用方法:
LocalDate date = LocalDate.of(2021, 10, 1); // 2021年10月1日,國慶節(jié) LocalDate nextWorkingDay = DateUtils.getNextWorkingDay(date); // 獲取下一個工作日 System.out.println(nextWorkingDay); // 輸出2021-10-04,周一
方法2:使用第三方工具類holiday-java進行計算
holiday-java是一款輕量級的Java節(jié)假日計算工具,支持中國法定節(jié)假日、放假調休日和節(jié)氣,能夠精確計算指定日期是否為法定節(jié)假日、放假調休日,以及獲取下一個工作日和下一個假期。
使用方法:
// 初始化HolidayUtil,建議將其作為單例對象使用 HolidayUtil holidayUtil = new HolidayUtil(); LocalDate date = LocalDate.of(2021, 10, 1); // 2021年10月1日,國慶節(jié) LocalDate nextWorkingDay = holidayUtil.nextWorkday(date); // 獲取下一個工作日 System.out.println(nextWorkingDay); // 輸出2021-10-04,周一
以上兩種方法均能夠實現(xiàn)跳過周末和法定節(jié)假日,可以根據實際情況選擇適合自己的方法。