java实现每年存储工作日节假日
时间: 2023-07-13 18:18:17 浏览: 82
要实现每年存储工作日节假日,可以使用Java中的Calendar类和HolidayCalendar类。具体实现步骤如下:
1. 创建一个HolidayCalendar类,用于存储每年的工作日节假日信息。
2. 在HolidayCalendar类中定义一个HashMap,用于存储每个日期对应的工作日、节假日信息。HashMap的key为日期,value为Holiday对象。
3. 在HolidayCalendar类中定义Holiday对象,包含日期、是否为工作日、是否为节假日等信息。
4. 使用Calendar类生成每年的日期,并将每个日期对应的工作日、节假日信息存储到HolidayCalendar中。
5. 可以通过HolidayCalendar类提供的方法,查询某个日期是否为工作日、节假日等信息。
示例代码如下:
```java
import java.util.Calendar;
import java.util.HashMap;
public class HolidayCalendar {
private HashMap<String, Holiday> calendar;
public HolidayCalendar(int year) {
calendar = new HashMap<>();
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH, 1);
while (c.get(Calendar.YEAR) == year) {
String date = String.format("%04d-%02d-%02d", c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, c.get(Calendar.DAY_OF_MONTH));
boolean isWeekend = c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY;
boolean isHoliday = /* 判断该日期是否为节假日 */;
boolean isWorkday = /* 判断该日期是否为工作日 */;
calendar.put(date, new Holiday(date, isWeekend, isHoliday, isWorkday));
c.add(Calendar.DAY_OF_MONTH, 1);
}
}
public boolean isWorkday(String date) {
Holiday h = calendar.get(date);
return h == null ? false : h.isWorkday();
}
public boolean isHoliday(String date) {
Holiday h = calendar.get(date);
return h == null ? false : h.isHoliday();
}
public boolean isWeekend(String date) {
Holiday h = calendar.get(date);
return h == null ? false : h.isWeekend();
}
private class Holiday {
private String date;
private boolean isWeekend;
private boolean isHoliday;
private boolean isWorkday;
public Holiday(String date, boolean isWeekend, boolean isHoliday, boolean isWorkday) {
this.date = date;
this.isWeekend = isWeekend;
this.isHoliday = isHoliday;
this.isWorkday = isWorkday;
}
public boolean isWeekend() {
return isWeekend;
}
public boolean isHoliday() {
return isHoliday;
}
public boolean isWorkday() {
return isWorkday;
}
}
}
```
调用示例:
```java
HolidayCalendar calendar = new HolidayCalendar(2021);
System.out.println(calendar.isWorkday("2021-01-01")); // false
System.out.println(calendar.isHoliday("2021-01-01")); // true
System.out.println(calendar.isWeekend("2021-01-02")); // true
System.out.println(calendar.isWorkday("2021-01-04")); // true
```
上述代码中,HolidayCalendar类中的构造函数会生成2021年的日期信息,并将每个日期对应的工作日、节假日信息存储到HashMap中;isWorkday()、isHoliday()、isWeekend()三个方法用于查询某个日期是否为工作日、节假日、周末。