先写一个工作日类型,成员是当天的日期和是否工作。
class WorkDay{
Calendar calendar;
boolean work;
public WorkDay(Calendar calendar, boolean work) {
this.calendar = calendar;
this.work = work;
}
@Override
public String toString() {
return "WorkDay{" +
"calendar=" + Main.get_string(calendar) +
", work=" + work +
", 星期" + (calendar.get(Calendar.DAY_OF_WEEK) - 1) +
'}';
}
public Calendar getCalendar() {
return calendar;
}
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
public boolean isWork() {
return work;
}
public void setWork(boolean work) {
this.work = work;
}
public String toJsonString(){
return " {\"date\":\"" + Main.get_string(this.calendar) + "\", "+"\"work\":\""+ this.work +"\"}";
}
}
然后随便写写就做完了。
public class Main {
public static boolean isNaturalWork(Calendar calendar) {
int num = calendar.get(Calendar.DAY_OF_WEEK);
if(num == Calendar.SATURDAY || num == Calendar.SUNDAY) return false;
return true;
}
public static String get_string(Calendar calendar){
return (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
}
public static Map<String,Boolean> arrangeWorkDays(){
Map<String,Boolean> res = new HashMap<>();
//国务院小程序放假安排
//false 不工作
//true 工作
res.put("2022-01-01",false);
res.put("2022-01-02",false);
res.put("2022-01-03",false);
res.put("2022-01-29",true);
res.put("2022-01-30",true);
res.put("2022-01-31",false);
res.put("2022-02-01",false);
res.put("2022-02-02",false);
res.put("2022-02-03",false);
res.put("2022-02-04",false);
res.put("2022-02-05",false);
res.put("2022-02-06",false);
res.put("2022-04-02",true);
res.put("2022-04-03",false);
res.put("2022-04-04",false);
res.put("2022-04-05",false);
res.put("2022-04-24",true);
res.put("2022-04-30",false);
res.put("2022-05-01",false);
res.put("2022-05-02",false);
res.put("2022-05-03",false);
res.put("2022-05-04",false);
res.put("2022-05-07",true);
res.put("2022-06-03",false);
res.put("2022-06-04",false);
res.put("2022-06-05",false);
res.put("2022-09-10",false);
res.put("2022-09-11",false);
res.put("2022-09-12",false);
res.put("2022-10-01",false);
res.put("2022-10-02",false);
res.put("2022-10-03",false);
res.put("2022-10-04",false);
res.put("2022-10-05",false);
res.put("2022-10-06",false);
res.put("2022-10-07",false);
res.put("2022-10-08",true);
res.put("2022-10-09",true);
return res;
}
public static void main(String[] args) {
Calendar cal_start = new GregorianCalendar(2022,Calendar.JANUARY,1);
Calendar cal_end = new GregorianCalendar(2023,Calendar.JANUARY,1);
String str_end = get_string(cal_end);
List<WorkDay> workDays = new ArrayList<>();
Map<String,Boolean> arrangement = arrangeWorkDays();
while(!get_string(cal_start).equals(str_end)){
String dayString = get_string(cal_start);
WorkDay w = new WorkDay((Calendar) cal_start.clone(),isNaturalWork(cal_start));
if(arrangement.get(dayString) != null){
w.setWork(arrangement.get(dayString));
System.out.println(w.toJsonString());
}
workDays.add(w);
cal_start.add(Calendar.DATE,1);
}
StringBuilder sb = new StringBuilder();
sb.append("[");
sb.append(workDays.get(0).toJsonString());
for(int i = 1; i < workDays.size(); i++){
WorkDay ww = workDays.get(i);
sb.append(",");
sb.append(ww.toJsonString());
}
sb.append("]");
try {
BufferedWriter out = new BufferedWriter (new OutputStreamWriter(new FileOutputStream("workdays.json"), "UTF-8"));
out.write(sb.toString());
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果看看,输出了一个文件