判断日期是否是节假日、双休日、调休日 java实例
时间: 2023-07-10 18:39:58 浏览: 136
以下是一个 Java 实例,可以用来判断日期是否为节假日、双休日、调休日:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
public class HolidayChecker {
// 节假日日期列表,这里只列出了部分节假日日期,可以根据实际情况进行补充
private static final String[] HOLIDAYS = {
"2022-01-01", // 元旦
"2022-02-01", // 春节
"2022-02-02",
"2022-02-03",
"2022-04-05", // 清明节
"2022-05-01", // 劳动节
"2022-06-01", // 儿童节
"2022-09-21", // 中秋节
"2022-10-01", // 国庆节
"2022-10-02",
"2022-10-03",
"2022-10-04",
"2022-10-05",
"2022-10-06",
"2022-10-07"
};
/**
* 判断指定日期是否为节假日
*
* @param date 日期,格式为"yyyy-MM-dd"
* @return 是否为节假日
*/
public static boolean isHoliday(String date) {
for (String holiday : HOLIDAYS) {
if (date.equals(holiday)) {
return true;
}
}
return false;
}
/**
* 判断指定日期是否为双休日
*
* @param date 日期,格式为"yyyy-MM-dd"
* @return 是否为双休日
*/
public static boolean isWeekend(String date) {
LocalDate localDate = LocalDate.parse(date);
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
return dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY;
}
/**
* 判断指定日期是否为调休日
*
* @param date 日期,格式为"yyyy-MM-dd"
* @return 是否为调休日
*/
public static boolean isAdjustRestDay(String date) {
LocalDate localDate = LocalDate.parse(date);
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
// 判断是否为周一到周五的工作日,如果是则需要判断是否为调休日
if (dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY) {
// 调休日为节假日前后的工作日,需要判断前一天和后一天是否为节假日
LocalDate prevDate = localDate.minusDays(1);
LocalDate nextDate = localDate.plusDays(1);
return isHoliday(prevDate.toString()) || isHoliday(nextDate.toString());
}
return false;
}
public static void main(String[] args) {
String date = "2022-01-01";
System.out.println(date + "是否为节假日:" + isHoliday(date));
System.out.println(date + "是否为双休日:" + isWeekend(date));
System.out.println(date + "是否为调休日:" + isAdjustRestDay(date));
}
}
```
在这个例子中,我们使用了 Java 8 中的 LocalDate 类来处理日期,并使用 DayOfWeek 类来获取星期几。在 isHoliday() 方法中,我们使用一个字符串数组来存储节假日日期列表,并通过循环来判断指定日期是否为节假日。在 isWeekend() 方法中,我们使用 DayOfWeek 类来判断指定日期是否为周六或周日。在 isAdjustRestDay() 方法中,我们判断指定日期是否为周一到周五的工作日,如果是,则判断前一天和后一天是否为节假日来确定是否为调休日。最后,在 main() 方法中,我们演示了如何使用这些方法来判断指定日期是否为节假日、双休日、调休日。
阅读全文