判断日期是否是节假日、双休日、调休日 java工具类
时间: 2023-07-10 13:39:58 浏览: 171
以下是一个 Java 工具类,可以用来判断日期是否为节假日、双休日、调休日:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateUtils {
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"
};
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public static boolean isHoliday(String dateStr) {
LocalDate date = LocalDate.parse(dateStr, DATE_FORMATTER);
for (String holiday : HOLIDAYS) {
if (dateStr.equals(holiday)) {
return true;
}
}
return false;
}
public static boolean isWeekend(String dateStr) {
LocalDate date = LocalDate.parse(dateStr, DATE_FORMATTER);
return date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY;
}
public static boolean isAdjustRestDay(String dateStr) {
LocalDate date = LocalDate.parse(dateStr, DATE_FORMATTER);
DayOfWeek dayOfWeek = date.getDayOfWeek();
if (dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY) {
LocalDate prevDate = date.minusDays(1);
LocalDate nextDate = date.plusDays(1);
return isHoliday(prevDate.toString()) || isHoliday(nextDate.toString());
}
return false;
}
}
```
在这个工具类中,我们使用了 Java 8 中的 LocalDate 类来处理日期,并使用 DayOfWeek 类来获取星期几。在 isHoliday() 方法中,我们使用一个字符串数组来存储节假日日期列表,并通过循环来判断指定日期是否为节假日。在 isWeekend() 方法中,我们使用 DayOfWeek 类来判断指定日期是否为周六或周日。在 isAdjustRestDay() 方法中,我们判断指定日期是否为周一到周五的工作日,如果是,则判断前一天和后一天是否为节假日来确定是否为调休日。在这个工具类中,我们还使用了 DateTimeFormatter 来格式化日期字符串。使用这个工具类非常简单,只需要调用相应的方法即可。例如:
```java
public static void main(String[] args) {
String dateStr = "2022-01-01";
boolean isHoliday = DateUtils.isHoliday(dateStr);
boolean isWeekend = DateUtils.isWeekend(dateStr);
boolean isAdjustRestDay = DateUtils.isAdjustRestDay(dateStr);
System.out.println(dateStr + " 是否为节假日:" + isHoliday);
System.out.println(dateStr + " 是否为双休日:" + isWeekend);
System.out.println(dateStr + " 是否为调休日:" + isAdjustRestDay);
}
```
输出结果如下:
```
2022-01-01 是否为节假日:true
2022-01-01 是否为双休日:true
2022-01-01 是否为调休日:false
```
这个工具类可以轻松地集成到你的项目中,方便地进行日期判断。
阅读全文