一、什么是Calendar类?
Calendar类也叫日历类,它是java.util包下的一个抽象类不可以通过new去创建该类的对象。用于处理日期和时间的类,它提供了一系列静态方法和实例方法来获取、设置和操作日期和时间。Calendar类定义了一个抽象基类,它的子类包括GregorianCalendar、JapaneseCalendar等,还有一些常用字段(日历字段:YEAYR、MONTH、DATE DAY_OF_MONTH、HOUR)。
二、Calendar类的方法演示
代码如下:
/*
Calendar类:日历类
package包:文件夹java.util
抽象类abstract:不可以通过new去创建该类的对象
public static Calendar getInstance()
使用默认时区和区域设置获取日历。 返回的Calendar基于默认时区中的当前时间,
已知直接子类:GregorianCalendar
*/
//创建Calendar的实例
Calendar instance = Calendar.getInstance();
/*
方法:get(int filed)
参数filed就是我们这个Calendar类中的一个常量字段
YEAR:年
MONTH:月 【注意:0-11:表示一月到十二月】
*/
int year = instance.get(Calendar.YEAR);//年
int month = instance.get(Calendar.MONTH);//月
//get和 set字段编号表示当月的日期。
int date = instance.get(Calendar.DATE);//日
System.out.println(year+"年"+(month+1)+"月"+date+"号");//2023年11月30号
int dayweek = instance.get(Calendar.DAY_OF_WEEK);//周内的天数-->星期的描述
0-6代表:星期天到下周星期六
System.out.println(year+"年"+(month+1)+"月"+date+"号"+" 星期"+(dayweek-
1));//2023年11月30号 星期4
//get和 set字段编号表示当月的日期
int daymonth = instance.get(Calendar.DAY_OF_MONTH);
//get和 set字段编号当年的日期编号
int dayyear = instance.get(Calendar.DAY_OF_YEAR);
System.out.println(daymonth+" "+dayyear);//30 334
System.out.println("------------------------");
/*
set()
*/
//给给定的字段设置它的值
instance.set(Calendar.YEAR,2024);
int year1 = instance.get(Calendar.YEAR);
System.out.println(year1+"年");//2024年
//直接设置年月日
instance.set(2024,9,1);
System.out.println(instance.get(Calendar.YEAR)+"年"+instance.get(Calendar.MONTH)+"月"+instance.get(Calendar.DATE)+"号");//2024年9月1日
/*
add()-->
*/
instance.add(Calendar.YEAR,2);
instance.add(Calendar.MONTH,2);
System.out.println(instance.get(Calendar.YEAR)+"年"+instance.get(Calendar.MONTH)+"月"+instance.get(Calendar.DATE)+"号");//2026年11月1号
/*
gettime()-->把日历显示转化为日期显示
*/
Date time = instance.getTime();
System.out.println(time);//Tue Dec 01 18:21:19 CST 2026
//获取当前时间
System.out.println(new Date());//Thu Nov 30 18:22:52 CST 2023
三、Calendar类的简单实用
例:1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好星期天?
Calendar instance = Calendar.getInstance(); for(int year=1999;year<100000;year+=100){ instance.set(Calendar.YEAR,year); instance.set(Calendar.MONTH,11); instance.set(Calendar.DAY_OF_MONTH,31); System.out.println(year+" "+instance.get(Calendar.DAY_OF_WEEK)); if(instance.get(Calendar.DAY_OF_WEEK)==1){ System.out.println(year); break; } } //结果: 1999 6 2099 5 2199 3 2299 1 2299