高分悬赏:Java语言如何在控制台中输出当前的月历

高分悬赏:Java语言如何在控制台中输出当前的月历
高分悬赏:Java语言如何在控制台中输出当前的月历

看了一个用 GUI 实现的日历,应该符合楼主的要求:https://blog.csdn.net/perrywork/article/details/13287717

转载自:
JAVA实现月历的输出【万年历】最新

import java.time.LocalDate;

public class TestScanner {

public static void main(String[] args) {
    rili();
}

private static void rili() {

    System.out.println(" Mon Tue Web Thu Fri Sta Sun");
    //获取当前日期
    LocalDate now = LocalDate.now();
    //获取当前月份
    int nowMonth = now.getMonthValue();
    //获取今天是几号
    int nowDay = now.getDayOfMonth();
    //在外部设置一个月份的变量,用于与当前月份进行判断
    int dayOfMonth = nowMonth;
    //获取本月月初的日期
    now = now.minusDays(nowDay - 1);
    //获取月初是星期几
    int firstWeek = now.getDayOfWeek().getValue();
    String blank = "";
    for(int i = 0; i < firstWeek; i++) {
        blank += "    ";
    }
    //如果1号是星期一的话前面添加三个空格
    if(firstWeek != 1) {
        //截取最后一个空格用于存放日期,不然的话会错位
        blank = blank.substring(0, blank.length() - 1);
    } else {
        blank = "   ";
    }
    //打印日期
    System.out.print(blank + now.getDayOfMonth());
    //如果加1天之后的日期还是本月份的就一直打印
    while(dayOfMonth == nowMonth) {
        //加1天
        now = now.plusDays(1L);
        //获取加1天之后的月份
        dayOfMonth = now.getMonthValue();
        //如果加一天之后的月份不等于当前月份,就直接跳出循环
        if (dayOfMonth != nowMonth) {
            break;
        }
        //判断如果日期为双位数,就在前面添加两个空格,否则就添加三个空格
        if (now.getDayOfMonth() < 10) {
            //判断加一天之后的日期是否和今天相等,如果相等就在前面加个*
            if (now.getDayOfMonth() == nowDay) {
                System.out.print("  *" + now.getDayOfMonth());
            } else {
                System.out.print("   " + now.getDayOfMonth());
            }
        } else {
            if (now.getDayOfMonth() == nowDay) {
                System.out.print(" *" + now.getDayOfMonth());
            } else {
                System.out.print("  " + now.getDayOfMonth());
            }
        }
        //获取加一天之后的星期数
        int week = now.getDayOfWeek().getValue();
        //如果是星期日,就换行
        if (week == 7) {
            System.out.println();
        }
    }
}

}