一、 如何创建Calendar对象
Calendar是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法getInstance,来获得一个Calendar对象, 得到的Calendar 由当前时间初始化.
1 Calendar cal = Calendar.getInstance();
二、 字段详解
Calendar中set 和get 时间都是通过在参数中填入不同的字段来实现的, 不过有部分字段的常量值与约定俗成的值不相同
下面字段我们以1998年2 月28 日23 时11 分11 秒来讲解
1 Calendar cal =Calendar.getInstance();2 cal.set(Calendar.YEAR, 1998);3 cal.set(Calendar.MONTH, 1);4 cal.set(Calendar.DATE, 28);5 cal.set(Calendar.HOUR_OF_DAY, 23);6 cal.set(Calendar.MINUTE, 11);7 cal.set(Calendar.SECOND, 11);
1. YEAR
默认情况下指示为年份.
例子中YEAR 为1998
2. MONTH
指示当前年中的月份数,一年中的一月的值为0
需要注意的是JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER 分别与[0, 11] 对应, 在设置和获取日期时要格外注意
3. WEEK_OF_YEAR
指示当前年中的星期数. 一年中的第一个星期的值为1.
例子中WEEK_OF_YEAR 为9
4. WEEK_OF_MONTH
指示当前月中的星期数. 一个月中第一个星期的值为1.
例子中WEEK_OF_MONTH 为5
5. DAY_OF_MONTH
指示一个月中的某天. 它与DATE 是同义词. 一个月中第一天的值为1.
例子中DAY_OF_MONTH 为28
6. DATE
同DAY_OF_MONTH
7. DAY_OF_YEAR
指示当前年中的天数. 一年中第一天的值为1.
例子中DAY_OF_YEAR 为59
8. DAY_OF_WEEK
指示一个星期中的某天, 一周中第一天的值为1.
需要注意的是, 与中国人的习惯不同, 此处一周中的第一天为 周日. 一周的顺序依次为: 周日(1), 周一(2), 周二(3), 周三(4), 周四(5), 周五(6), 周六(7) 在设置和获取日期时要格外注意
9. AM_PM
指示HOUR 是在中午之前还是在中午之后. [0, 12) 为上午, AM_PM 值为1 [12, 24)为下午, AM_PM 值为0
10. HOUR
指示上午或下午的小时.
例子中HOUR 为11
11. HOUR_OF_DAY
指示一天中的小时。HOUR_OF_DAY 用于24 小时制时钟
例子中HOUR_OF_DAY 为23
12. MINUTE
指示一小时中的分钟
例子中MINUTE 为11
13. SECOND
指示一分钟中的秒
例子中SECOND 为11
三、 设置值
1 cal.set (2013, 5, 4, 13, 44, 51);//年月日时分秒 (月份0代表1月)
2 cal.set (Calendar.YEAR, 2014);//年
3 cal.set (Calendar.MONTH, 7);//月 (月份0代表1月)
4 cal.set (Calendar.DATE, 11);//日
5 cal.set (Calendar.HOUR_OF_DAY, 15);//时
6 cal.set (Calendar.MINUTE, 33);//分
7 cal.set (Calendar.SECOND, 32);//秒
四、 获取值
1 cal.get (Calendar.YEAR);//年
2 cal.get (Calendar.MONTH) + 1;//月 (必须要+1)
3 cal.get (Calendar.DATE);//日
4 cal.get (Calendar.HOUR_OF_DAY);//时
5 cal.get (Calendar.MINUTE);//分
6 cal.get (Calendar.SECOND);//秒
7 cal.get (Calendar.DAY_OF_WEEK);//星期 (Locale.ENGLISH情况下,周日是1,剩下自己推算)
五、 运算值
1. Add
1 cal.add (Calendar.YEAR, 1);//年
2 cal.add (Calendar.MONTH, 1);//月
3 cal.add (Calendar.DATE, 1);//日
4 cal.add (Calendar.HOUR_OF_DAY, -1);//时
5 cal.add (Calendar.MINUTE, 1);//分
6 cal.add (Calendar.SECOND, 1);//秒
7 cal.add (Calendar.DATE, 7);//周
六、 Calendar 对象间的比较
比较两个 Calendar 对象表示的时间值, 如果参数表示的时间等于此 Calendar 表示的时间,则返回 0 值;如果此 Calendar 的时间在参数表示的时间之前,则返回小于 0 的值;如果此 Calendar 的时间在参数表示的时间之后,则返回大于 0 的值。