Calendar(日历)类
一.Calendar概述
-
位于java.util.Caleandar包中
-
是一个抽象基类,用于完成日期字段之间相互转换的功能
-
由于是抽象类型,因此不可直接实例化(不能new 对象)
-
一个Caleandar类的实例是系统时间的抽象表示
-
static Calendar getInstance 使用默认时区和环境获得一个日历
二.如何实例化?
两种方式:
1.创建其子类(GregorianCaleandar)对象
//创建子类(GergorianCalendar)对象
Calendar calendar1 = new GregorianCalendar();
System.out.println(calendar1);
2.调用其静态方法getInstance()
//调用getInstance()方法
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
-
getInstance()方法底层还是通过调用GregorianCaleandar来new一个对象
-
因此两种方法本质上相同,只不过第二种方法更便于记忆,也更常用
三.常用方法示例
①.get() //用来获取常用属性信息
int days = calendar.get(Calendar.DAY_OF_MONTH); //获取本月的第几天
System.out.println(days);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); //获取今天是本月的第几周
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); //获取今年的第几天
②.set() //用来设置属性
calendar.set(Calendar.DAY_OF_MONTH,15); //设置今天为本月的第15天
int day1 = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day1); //结果为:15
③.add() //用来增添属性值(体现可变性)
calendar.add(Calendar.DAY_OF_MONTH,6); //在原有时间基础上增加相应的天数
int day2 = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day2); //由于上面设置时间为15号,所以在15的基础上增加6天,变为21,体现了Caleandar类的可变性
④getTime() //例如用于将日历类的对象转换为Date类
Date date1 = Calendar.getInstance().getTime();
System.out.println(date1); //结果为:Thu Nov 25 21:40:15 CST 2021
⑤setTime() //例如用于将Date类的对象转换为日历类
Calendar.getInstance().setTime(date1);
int day3 = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day3); //结果为:21
注意点:
-
获取月份时: 一月为0,二月为1,以此类推
-
获取星期时: 周天为1,周一为2,以此类推
四.Calendar类的缺点
-
由于是用abstract修饰的抽象类,所以无法直接创建对象,需创建子类的对象或调用静态方法getInstance()来间接实例化
-
Calendar类存在可变性,即可对属性进行修改