public class Test {
public static void main(String[] args) throws ParseException {
System.out.println("请输入年份和月份:(年份-月份)");
Scanner sc = new Scanner(System.in);
String dateStr = sc.next() + "-01";
LocalDate nowdate = LocalDate.parse(dateStr);
// nowdate = 2020-05-01
System.out.println(nowdate);
// 查询nowdate该月一共多少天
int max = nowdate.lengthOfMonth();
System.out.println("当前月份最大天数为:" + max);
// 第一次休息的日期 2020-02-01
LocalDate start = LocalDate.of(2020,2,1);
// 输入月最后一天 2020-05-31
LocalDate end = nowdate.plusDays(max).minusDays(1);
// 输入月份月末-首次休息的间隔天数
// 1 2 3 4 5 6 7 8 9 i
// 1 1 1 i%4==1 休息
int i = 1;
LocalDate tempDate = start;
ArrayList<Day> days = new ArrayList<>();
while (tempDate.isBefore(end)) {
Day day = new Day();
day.setLd(tempDate);
day.setRest(i%4==1 ? true : false);
day.setWeekDay(tempDate.getDayOfWeek().getValue());
days.add(day);
i++;
tempDate = tempDate.plusDays(1);
}
System.out.println("间隔天数:" + (days.size() - 1));
System.out.println(days);
// 全部休息日
System.out.println("全部休息日如下:");
ArrayList<Day> allRest = new ArrayList<>();
for (int i1 = 0; i1 < days.size(); i1++) {
Day day = days.get(i1);
if(day.isRest()){
allRest.add(day);
}
}
System.out.println(allRest);
// 本月休息日
ArrayList<Day> thisMonthRest = new ArrayList<>();
System.out.println("本月休息日:");
for (int i1 = 0; i1 < allRest.size(); i1++) {
Day day = allRest.get(i1);
if(!(day.getLd().isBefore(nowdate))){
thisMonthRest.add(day);
}
}
System.out.println(thisMonthRest);
}
}
public class Day {
private LocalDate ld; //当前日期
private boolean isRest; //是否休息
private int weekDay; //星期几
public Day(LocalDate ld, boolean isRest, int weekDay) {
this.ld = ld;
this.isRest = isRest;
this.weekDay = weekDay;
}
public Day() {
}
public LocalDate getLd() {
return ld;
}
public void setLd(LocalDate ld) {
this.ld = ld;
}
public boolean isRest() {
return isRest;
}
public void setRest(boolean rest) {
isRest = rest;
}
public int getWeekDay() {
// String[] week = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
// weekDay = week[ld.getDayOfWeek().getValue() - 1];
return weekDay;
}
public void setWeekDay(int weekDay) {
this.weekDay = weekDay;
}
@Override
public String toString() {
return ld + "-星期" + weekDay +
"-" + (isRest ? "休息" : "上班");
}
}