Java日历

知识点来源

源自Java核心技术卷一,第四章对象与类,98页

初心

Java爱好者一枚,最近在看Java核心技术卷一(对象与类),学习到了Java类库中的日历表示法的LocalDate类,所以又开始写博客做分享了,技术很初级,莫介意哈,嘿嘿…
没学到过的可以了解哈,学过的也可以看一哈,加深映像…
希望对游览到此的你有所帮助…

出发点

标准的Java类库分别包含两个类:
一个是用来表示时间点的Date类
另外一个呢,是用来表示大家熟悉的日历表示法的LocalDate类
虽然Date也提供了诸多方法来处理日历,但是Java类库设计者觉得应当单独提供类来处理日历,所以Date中处理日历的方法被标记为废弃不用。虽然任然可以在程序中使用这些方法,不过如果这样做,编译会出现警告。最好还是不要使用这些废弃不用的方法,因为将来的某个类库版本很有可能将它们完全删除。

LocalDate方法

static LocalDate now()   构造一个当前日期对象
		static LocalDate now(int year,int month,int day)  构造一个表示给定日期对象
		int getyear()		得到当前年
		int getMonthValue()		得到当前月
		int getDayOfMonth()			得到当前日
		DayOfWeek getDayOfWeek		得到当前日期时星期几,作为DayOfWeek类的一个实例返回。调用getVal来得到1-7之间一个数,1星期一,7星期日
		LocalDate plusDays(int n)	生成当前日期n天后
		LocalDate minusDays(int n)		生成当前日期n天前

当前月的日历遍历

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalTime;
public class LocalDateClass {
	public static void main(String[] args) {
		//构造一个日历对象,初始化当前日期和时间
		LocalDate date=LocalDate.now();
		//获取当前的月,赋值给变量month
		int month=date.getMonthValue();
		//获取当前的日,赋值给today
		int today=date.getDayOfMonth();
		//将date时间点设置为这个月的第一天
		date=date.minusDays(today-1);
		//获取date时间点(该月的第一天)是星期几,1表示星期一,7表示星期日
		DayOfWeek weekday=date.getDayOfWeek();
		int value=weekday.getValue();
		//设置日历的星期的列名
		System.out.println("日	 一	二	三	四	五	六");
		//根据今天为星期几,设置第一行星期几前面的都用空行填充,for循环遍历
		for(int i=1;i<value;i++){
			System.out.print("	");
		}
		//因为每个月份的天数都会变化的,所以采用while循环遍历,判断条件为:获取date时间点的月份与之前得到的变量month比较
		//从date时间点的1号开始遍历
		while(date.getMonthValue()==month){
				//输出该时间点,月份的第一天,1号(后面的每次循环都加1)
				System.out.printf("%3d",date.getDayOfMonth());
				//如果遍历的号数与当天的日的号数相同,则在在该日做*号标记
				if(date.getDayOfMonth()==today){
					System.out.print("*	");
				}else{
					//否则不做标记,加空格,格式化输出
					System.out.print("	");
				}
				//重新赋值date,在遍历的号数加1
				date=date.plusDays(1);
				//当加1后的号数,他所对应的星期为1时,则换行
				if(date.getDayOfWeek().getValue()==1){
					System.out.println();
				}
			}
		}
	}