日期和时间类
Calender类
Calender类是一个抽象类,也是所有日历类的模板,并提供所有日历类通用的方法。他不能直接实例化,程序只能创建一个Calendar子类的实例。Java本身提供了一个GregorianCalendar类,一个代表里高利日历的子类,也就是我们常说的公历。
由于Calendar类是一个抽象类,故不能使用构造器来创建Calendar实例。但是它提供了几个静态getInstance()方法来获取Calendar实例,这些方法根据TimeZone,Locale类来获取特定的Calender,如果不指定TimeZone,Locale,则使用默认的TimeZone,Locale来获取Calender。
获取Calendar实例
//创建一个默认的Calender实例
Calendar c = Calender.getInstance();
//从Calender中获取Date对象
Date date = Calender.getTime();
从Date对象中获取Calendar实例
Calender c2 = Calender.getInstance();//由于Calendar没有构造器可以接受date对象
c2.setTime(date); //故先得到一个Calendar实例,然后调用其setTime()方法
Calender常用方法
Calender中的类变量
field参数(public static final int )
常量 | 含义 | 值 | 日期最大值 | 日期最小值 |
---|---|---|---|---|
Calendar.YEAR | 年 | 1 | 292278994 | 1 |
Calendar.MONTH | 月 | 2 | 11 | 0 |
Calendar.DATE | 日 | 5 | 31 | 1 |
Calendar.HOUR | 时 | 10 | 11 | 0 |
Calendar.MINUTE | 分 | 12 | 59 | 0 |
Calendar.SECOND | 秒 | 13 | 59 | 0 |
注意,月份的最大值为11,最小值为0,故用0表示1月,1表示2月,以此类推…
获取日期
int get(int field):返回指定日历字段的值
int getActualMaximum(int field):放回给定日历字段的最大值,月份的最大值为11
int getActualMinimum(int field):返回给定日历字段的最小值,月份的最小值为0
设定日期
//设置Calendar对象的年,月,日,时,分,秒6个字段的值
void set(int year,int month,int date,int hourOfDay,int minute,int second)
void set(int year,int month,int date,int hourOfDay,int minute)
set(int year,int month,int date)
void set(int field,int value) //单独设定某个字段的值
Calendar c = Calender.getInstance();
c.set(2018,9,29,12,32,23); //设定时间为2018-10-29,12:32:23
void add(int field,int amount):根据日历的规则,为给定的日历字段加上/减去指定的时间量
c.set(2018,9,29,12,32,23); //设定时间为2018-10-29,12:32:23
c.add(Calendar.YEAR,-2); //2016-10-29,12:32:23
void roll(int field,int amount);与add相似,不同处在于amount超过field能承受最大值时,add会改变其他字段,而roll不会
c.set(2018,8,15);
c.add(Calendar.MONTH,5);//2019-2-15
c.roll(Calendar.MONTH,5);//2018-2-15