Live2D

更改器方法与访问器方法(应用LocalDate类显示当月日历)

更改器方法与访问器方法(应用LocalDate类显示当月日历)

上一篇的plusDays方法调用:

LocalDate aThousandDaysLater  = newYearsEve.plusDays(1000);

这个调用之后 newYearsEve会有什么变化?他会改为1000天之后的日期吗?事实上并没有。plusDays方法会生成一个新的LocalDate对象,然后把这个新对象赋给aThousandDaysLater变量。原来对象不做任何改动。plusDays方法没有更改调用这个方法的对象。

只访问对象而不修改对象的方法有时被称为 访问器方法

下面是应用LocalDate类显示当月日历的程序代码:

import java.time.*;
/**
 * 更改器方法和访问器方法
 * @version  显示当前月的日历 2022-01-15
 * @author zengzhicheng
 *
 */

public class CalendarTest {

	public static void main(String[] args) {
		
		LocalDate date =LocalDate.now(); 	//构建日历对象,用当前的日期和时间进行初始化
		int month = date.getMonthValue(); 	//获得当前月
		int today = date.getDayOfMonth();	//获得当前日
		
		//将date设置为这个月第一天,并得到这一天星期几
		date =  date.minusDays(today -1 );
		DayOfWeek weekday = date.getDayOfWeek();
		int value = weekday.getValue();		//调用getValue方法得到星期几的一个数值,周一返回1,周二返回2,以此类推
		
		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);   //生成当前日期1天后的日期
			if(date.getDayOfWeek().getValue()==1)   //每行结束换行
				System.out.println();
		}
		if(date.getDayOfWeek().getValue()!=1)
			System.out.println();

	}

}

image-20220115174530999

最后是LocalDate 的API

API Java.time.LocalDate

static LocalTime now()
    //构造一个表示当前日期的对象
static LocalTime of(int year,int month,int day)
    //构造一个表示给定日期的对象
int getYear()
int getMonthValue()
int getDayOfMonth()
    //得到当前日期的年、月和日。
DayOfWeek getDayOfWeek
    //得到当日期是星期几,作为DayOfWeek类的一个实例返回。调用getValue来得到1~7之间的一个数,表示这是星期几,1表示星期以,7表示星期日
LocalDate plusDays(int n)
LocalDate minusDays(int n)    
    //生成当前日期之后或之前N天的日期

参考书籍:

《Java核心技术·卷Ⅰ:基础知识(原版10版)》

posted @ 2022-01-15 17:58  逝者如斯夫zeng  阅读(165)  评论(0编辑  收藏  举报