打印当前月日历.java

参考代码:

import java.time.DayOfWeek;
import java.time.LocalDate;

public class CalendarTest {
    public static void main(String[] args) {
        // 1 获取当前日期,并用month和today存储当前月份以及当前号,例如20号,31号
        LocalDate date = LocalDate.now(); // => 2024-09-20
        int month = date.getMonthValue(); // => 9
        int today = date.getDayOfMonth(); // => 20

        // 2 将date设置为本月的第一天,并获取该天是星期几,例如7
        date = date.minusDays(today - 1); // => 2024-09-01
        DayOfWeek weekday = date.getDayOfWeek(); // => SUNDAY
        int value = weekday.getValue(); // => 7
        // 1 = Monday周一, ... , 7 = Sunday周日

        // 3 打印日历头
        System.out.printf("\u2728  Welcome to Month %d! \u2728%n%n", month);
        // %n是一个更为通用和安全的换行方式,特别是在涉及到不同操作系统时
        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for (int i = 1; i < value; ++i) { // 本月第一天一般不是周一开始!
            System.out.print("    "); // 注意使用英文空格!
        }

        // 4 打印号,适当时候换行
        while (date.getMonthValue() == month) { // 仅打印本月
            System.out.printf("%3d", date.getDayOfMonth());
            if (date.getDayOfMonth() == today) {
                System.out.print("*"); // 如果是当天标记一个*号
            } else {
                System.out.print(" ");
            }

            date = date.plusDays(1); // 打印完一天就将date更新为下一天
            if (date.getDayOfWeek().getValue() == 1) { // 如果这一天是周一,那么打印之前先换行
                System.out.println();
            }
        }

        if (date.getDayOfWeek().getValue() != 1) { // 如果这一天不是周一,但结束了,也补一个换行
            System.out.println();
        }
    }
}

 

posted @ 2024-09-20 12:37  xkfx  阅读(62)  评论(0编辑  收藏  举报