欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 的 LocalDate 实现实时日历

程序员文章站 2022-05-16 21:26:04
...

 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 实现一个日历,在控制台打印出,当月的日历,并在当天 添加 * 标志; 最后样式如下

                                          Java 的 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();
        }
    }
}