java.util.Calendar是日历类,在Date后出现的,替换了许多Date方法,该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间对象的。
获取方式:
Calendar为抽象类,由于语言敏感性,Calendar类在创建的时并非直接创建,而是通过静态方法创建,返回子类对象,如下:
Calendar的静态方法
public static Calendar getInstance():使用默认时区和语言环境获取一个日历。
例如:
public class Demo01Calendar{
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
System.out.println(c); //打印的不是地址值,说明重写了toString方法
}
}
常用方法
根据Calendar类的API文档,常用方法有:
public int get(int field):返回给定日历字段的值。
public void set(int field,int value):将给定的日历字段设置为给定值。
public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
成员方法的参数:
int field:日历类的字段,可以是使用Calendar类的静态成员变量获取
public static final int YEAR = 1; //年
public static final int MONTH = 2; //月
public static final int DATE = 5; //月中的某一天
public static final int DAY_OF_MONTH = 5; //月中的某一天
public static final int HOUR = 10; //时
public static final int MINUTE = 12; //分
public static final int SECOND = 13; //秒
Calendar类中提供很多成员常量,代表给定的日历字段:
字段值 含义
YEAR 年
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE 分
SECOND 秒
public int get(int field):返回给定日历字段的值。
参数:传递指定的日历字段(YEAR,MONTH…)
返回值:日历字段代表具体的值。
public class Demo02Calendar{
public static void main(String[] args){
//getInstance方法获取Calendar对象
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR); //获取年
System.out.println(year);
int month=c.get(Calendar.MONTH);
System.out.println(month); //月份从0开始
int date=c.get(Calendar.DATE);
System.out.println(date); //一个月的第几天
}
}
public void set(int field,int value):将给定的日历字段设置为给定值。
参数:
int field:传递指定的日历字段(YEAR,MONTH…)
int value:传递的字段设置具体的值。
public class Demo03Calendar{
public static void main(String[] args){
//getInstance方法获取Calendar对象
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR); //获取年
System.out.println(year);
c.set(Calendar.YEAR,9999); //设置年
year=c.get(Calendar.YEAR); //获取年
System.out.println(year); //9999
}
}
public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
把指定的字段增加/减少指定的值。
参数:
int field:传递指定的日历字段(YEAR,MONTH…)
int amount:增加/减少的值
正数:增加
负数:减少
public class Demo04Calendar{
public static void main(String[] args){
//getInstance方法获取Calendar对象
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR); //获取年
System.out.println(year);
c.add(Calendar.YEAR,2); //增加两年
year=c.get(Calendar.YEAR); //获取年
System.out.println(year); //2022
}
}
public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
把日历对象,转换为日期对象。
public class Demo05Calendar{
public static void main(String[] args){
//getInstance方法获取Calendar对象
Calendar c=Calendar.getInstance();
//把日历对象,转换为日期对象。
Date date=c.getTime();
System.out.println(date); //打印日期类
}
}