话不多说直接上代码!!!
public class HolidayUtil {
static List<String> holiday =new ArrayList<>();
static List<String> extraWorkDay =new ArrayList<>();
public static Boolean isWorkingDay(long time) {
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.of("+8"));
String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(formatTime);
initHoliday();
initExtraWorkDay();
//是否加班日
if(extraWorkDay.contains(formatTime)){
return true;
}
//是否节假日
if(holiday.contains(formatTime)){
return false;
}
//如果是1-5表示周一到周五 是工作日
DayOfWeek week = dateTime.getDayOfWeek();
if(week==DayOfWeek.SATURDAY||week==DayOfWeek.SUNDAY){
return false;
}
return true;
}
/**
* 初始化节假日
*/
public static void initHoliday(){
holiday.add("2022-09-10");
holiday.add("2022-09-11");
holiday.add("2022-09-12");
holiday.add("2022-10-01");
holiday.add("2022-10-02");
holiday.add("2022-10-03");
holiday.add("2022-10-04");
holiday.add("2022-10-05");
holiday.add("2022-10-06");
holiday.add("2022-10-07");
}
/**
* 初始化额外加班日
*/
public static void initExtraWorkDay(){
extraWorkDay.add("2022-10-08");
extraWorkDay.add("2022-10-09");
}
}
调用isWorkingDay方法传入当前时间戳即可,返回true为工作日 false为节假日。
其中initHoliday方法和initExtraWorkDay中的时间需要手动维护,因为每年的工作日和节假日都不一样