用Java实现一个节假日工具类
时间: 2024-03-16 09:46:12 浏览: 60
好的,以下是Java实现一个节假日工具类的示例代码:
```java
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
public class HolidayUtils {
private static Map<LocalDate, String> holidayMap = new HashMap<>();
static {
holidayMap.put(LocalDate.of(2022, 1, 1), "元旦");
holidayMap.put(LocalDate.of(2022, 2, 1), "春节");
holidayMap.put(LocalDate.of(2022, 4, 4), "清明节");
holidayMap.put(LocalDate.of(2022, 5, 1), "劳动节");
holidayMap.put(LocalDate.of(2022, 6, 1), "儿童节");
holidayMap.put(LocalDate.of(2022, 9, 10), "教师节");
holidayMap.put(LocalDate.of(2022, 10, 1), "国庆节");
holidayMap.put(LocalDate.of(2022, 12, 25), "圣诞节");
}
/**
* 判断指定日期是否是节假日
*
* @param date 指定日期
* @return 如果是节假日,返回节假日名称,否则返回null
*/
public static String isHoliday(LocalDate date) {
return holidayMap.get(date);
}
/**
* 判断指定日期是否是工作日(即非周六周日和节假日)
*
* @param date 指定日期
* @return 如果是工作日,返回true,否则返回false
*/
public static boolean isWorkday(LocalDate date) {
int weekDay = date.getDayOfWeek().getValue();
if (weekDay == 6 || weekDay == 7) {
return false;
}
String holidayName = isHoliday(date);
if (holidayName != null) {
return false;
}
return true;
}
}
```
在上面的代码中,我们定义了一个HolidayUtils类,其中包含了两个方法:isHoliday()和isWorkday()。
isHoliday()方法用于判断指定日期是否是节假日,如果是节假日,返回节假日名称,否则返回null。
isWorkday()方法用于判断指定日期是否是工作日,即非周六周日和节假日。如果是工作日,返回true,否则返回false。
在类的静态代码块中,我们初始化了一个节假日和对应节假日名称的Map,可以根据自己的需求进行修改。
使用该工具类时,只需要引入该类,然后调用isHoliday()和isWorkday()方法即可实现节假日和工作日的判断。例如:
```java
LocalDate date = LocalDate.of(2022, 10, 2);
if (HolidayUtils.isHoliday(date) != null) {
System.out.println(date + "是节假日:" + HolidayUtils.isHoliday(date));
} else if (HolidayUtils.isWorkday(date)) {
System.out.println(date + "是工作日。");
} else {
System.out.println(date + "是周末。");
}
```
输出结果为:
```
2022-10-02是周末。
```
这样就完成了一个简单的节假日工具类的实现。
阅读全文