public class Text {
    private static DayOfWeek[] ENUMS = DayOfWeek.values();
    private static String t = "\t";
    private static int[] number = {7, 6, 5, 4, 3, 2, 1};
	public static void main(String[] args) {
		//传入要打印的日期 					年   月 日
        LocalDate localDate = LocalDate.of(2020, 3, 1);
        text(localDate);
    }
    private static void text(LocalDate localDate) {
        //起始日期
        int day = 1;
        LocalDate beginningDate = LocalDate.of(localDate.getYear(), localDate.getMonth(), day),
                date = beginningDate,
                localDateNow = LocalDate.now();
        System.out.println(t + t + beginningDate.getYear() + "年" + t + beginningDate.getMonthValue() + "月\n" + "一\t二\t三\t四\t五\t六\t日");
        List<String> list = new ArrayList<>(),
                list1 = new ArrayList<>();
        int i = 1, size = beginningDate.lengthOfMonth() + day;
        //把当月的日期存入集合里
        while (i < size) {
			//用三目运算符判断日期是不是今天
            list.add(date.equals(localDateNow) ? i + "*" : String.valueOf(i));
            date = date.plusDays(day);
            i++;
        }
        for (int j = 0, carousel = 7, num; j < list.size(); j += carousel) {
            if (j == 0) {
                num = number[week(beginningDate) - day];
                list1.add(list.stream().limit(num).collect(Collectors.joining(t, join(beginningDate.getDayOfWeek()), "")));
                j += num;
            }
            list1.add(list.stream().skip(j).limit(carousel).collect(Collectors.joining(t)));
        }
        //打印日历
        list1.forEach(System.out::println);
        while (true) {
            if (localDate.getYear() != 2020) break;
            //往后移一年
            LocalDate localDate2 = localDate.plusMonths(1);
            //递归
            text(localDate2);
            return;
        }
    }
    /**
     * 获取当天的星期几
     * @param localDate
     * @return
     */
    private static int week(LocalDate localDate) {
        int week = 0;
        for (int i = 0; i < ENUMS.length; i++) {
            if (ENUMS[i].equals(localDate.getDayOfWeek())) {
                week = i + 1;
            }
        }
        return week;
    }
    /**
     * 用于显示日期
     * @param week
     * @return
     */
    private static String join(DayOfWeek week) {
        String t1 = "";
        StringBuilder sb = new StringBuilder();
        switch (week) {
            case TUESDAY:
                t1 = String.valueOf(sb.append(t));
                break;
            case WEDNESDAY:
                t1 = String.valueOf(sb.append(t).append(t));
                break;
            case THURSDAY:
                t1 = String.valueOf(sb.append(t).append(t).append(t));
                break;
            case FRIDAY:
                t1 = String.valueOf(sb.append(t).append(t).append(t).append(t));
                break;
            case SATURDAY:
                t1 = String.valueOf(sb.append(t).append(t).append(t).append(t).append(t));
                break;
            case SUNDAY:
                t1 = String.valueOf(sb.append(t).append(t).append(t).append(t).append(t).append(t));
                break;
        }
        return t1;
    }
}
运行结果

 
                   
                   
                   
                   
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   925
					925
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            