Java 的 LocalDate 实现实时日历

 LocalDate  的API :

Static LocalTime now( ) ; 构造一个表示当前日期的对象

Static LocalTime of ( int year , int month , int day ) ; 构造一个表示给定日期的对象

Int getYear ( ) ; 得到当前的 年

Int getMonth( ) ; 得到当前的 月

Int getDayOfMonth( ) ; 得到当前的 日;

DayOfWeek getDayOfWeek 

得到当前日期是星期几,作为 DayOfWeek 类的一个实例返回, 得到一个1~7的数,1表示星期一, 7表示星期日;

LocalDate  plusDays(  int  n ) ; 生成当前日期之后 n 天的日期;

LocalDate  minusDays(  int  n );生成当前日期之前 n 天的日期;

 

输出一个当前月的日历:

根据LocalDate 实现一个日历,在控制台打印出,当月的日历,并在当天 添加 * 标志; 最后样式如下

                                          

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


public class CalendarTest {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();//当前的日期。
        int month = date.getMonthValue();
        int today = date.getDayOfMonth();
        //minusDays(int n) 函数返回当前日期之前 n 天的 日期。
        //如果今天是3号,则往前找2天,找到了1号的位置,找到月初的日期,1号是哪天
        date = date.minusDays(today -1);
        DayOfWeek weekday = date.getDayOfWeek(); //获取当前为星期几
        int value = weekday.getValue();//当前是星期几的值      
        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        //日历的第一行的处理,如果今天是周三,则前面有两个空位置。
        //每个位置是 4个空格(3个数据长度+一个空格);
        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); //当前日期加 1 天, 往后移
            if (date.getDayOfWeek().getValue() == 1){//后一天是周一则换行
                System.out.println();
            }
        }
        if (date.getDayOfWeek().getValue() != 1) {
            System.out.println();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34851243/article/details/90979283