Java生成日历(使用LocalDate)

package com.sun.lesson02;

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

public class LocalDate01 {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        int month = date.getMonthValue();
        int today = date.getDayOfMonth();

        date = date.minusDays(today - 1);
        DayOfWeek weekday = date.getDayOfWeek();
        int value = weekday.getValue();

        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for (int i = 1; i < value; i++) {
            System.out.print("    ");
        }

        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);
            if(date.getDayOfWeek().getValue() == 1) System.out.println();
        }
        if(date.getDayOfWeek().getValue() != 1) System.out.println();
    }
}

关于minusDays,其内部源码形式如下:

   public LocalDate minusDays(long daysToSubtract) {
        return (daysToSubtract == Long.MIN_VALUE ? plusDays(Long.MAX_VALUE).plusDays(1) : plusDays(-daysToSubtract));
    }

如果当天是1号,today-1的输入就是0,然后三目运算会返回1;

如果当天不是1号,那么today就会加上-(today-1),也就是1.

posted @ 2020-11-22 14:24  Super揍敌客  阅读(284)  评论(0编辑  收藏  举报
返回顶端 2 3
4