Calendar的详细使用

时间:2025-03-10 16:37:57
                                                            优秀是一种习惯

Calendar的详细使用

      • 一、 如何创建 Calendar 对象
      • 二、 字段详解
      • 三、 设置值
      • 四、 获取值
      • 五、 运算值
      • 六、 Calendar 对象间的比较

一、 如何创建 Calendar 对象

Calendar 是一个抽象类, 无法通过直接实例化得到对象。因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化。

 Calendar cal = Calendar.getInstance();

二、 字段详解

Calendar 中 set 和 get 时间都是通过在参数中填入不同的字段来实现的, 不过有部分字段的常量值与约定俗成的值不相同。

下面字段我们以 1997 年 12 月 09 日 00 时 13分 11 秒 来讲解

 Calendar cal = Calendar.getInstance();
 cal.set(Calendar.YEAR, 1997);
 cal.set(Calendar.MONTH, 11);
 cal.set(Calendar.DATE, 09);
 cal.set(Calendar.HOUR_OF_DAY, 00);
 cal.set(Calendar.MINUTE, 13);
 cal.set(Calendar.SECOND, 11);
  1. YEAR
    默认情况下指示为当前年份。

  2. MONTH
    指示当前年中的月份数,一年中的一月的值为 0
    需要注意的是 JANUARY, FEBRUARY, MARCH,,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER 分别与 [0, 11] 对应,在设置和获取日期时要格外注意。

  3. WEEK_OF_YEAR
    指示当前年中的星期数。 一年中的第一个星期的值为 1。

  4. WEEK_OF_MONTH
    指示当前月中的星期数。 一个月中第一个星期的值为 1。

  5. DAY_OF_MONTH
    指示一个月中的某天。它与 DATE 是同义词. 一个月中第一天的值为 1。

  6. DATE
    同 DAY_OF_MONTH

  7. DAY_OF_YEAR
    指示当前年中的天数。 一年中第一天的值为 1。

  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

三、 设置值

 cal.set (2013, 5, 4, 13, 44, 51)//年月日时分秒 (月份0代表1月) 
 cal.set (Calendar.YEAR, 2014)//年 
 cal.set (Calendar.MONTH, 7)//月 (月份0代表1月) 
 cal.set (Calendar.DATE, 11)//日 
 cal.set (Calendar.HOUR_OF_DAY, 15)//时 
 cal.set (Calendar.MINUTE, 33)//分 
 cal.set (Calendar.SECOND, 32)//秒 

四、 获取值

 cal.get (Calendar.YEAR)//年 
 cal.get (Calendar.MONTH) + 1;//月 (必须要+1) 
 cal.get (Calendar.DATE)//日 
 cal.get (Calendar.HOUR_OF_DAY)//时 
 cal.get (Calendar.MINUTE)//分 
 cal.get (Calendar.SECOND)//秒 
 cal.get (Calendar.DAY_OF_WEEK)//星期 (情况下,周日是1,剩下自己推算)

五、 运算值

 cal.add (Calendar.YEAR, 1)//年 
 cal.add (Calendar.MONTH, 1)//月 
 cal.add (Calendar.DATE, 1)//日 
 cal.add (Calendar.HOUR_OF_DAY, -1)//时 
 cal.add (Calendar.MINUTE, 1)//分 
 cal.add (Calendar.SECOND, 1)//秒 
 cal.add (Calendar.DATE, 7)//周

六、 Calendar 对象间的比较

  1. 比较两个 Calendar 对象表示的时间值,如果参数表示的时间等于此 Calendar 表示的时间,则返回 0 值。
  2. 如果此 Calendar 的时间在参数表示的时间之前,则返回小于 0 的值。
  3. 如果此 Calendar 的时间在参数表示的时间之后,则返回大于 0 的值。