Calendar类和GregorianCalendar类

摘要:本文重点介绍Calendar类和GregorianCalendar类的关系、GregorianCalendar类创建及使用

一、Calendar类:

1、Calendar介绍

Calendar是java提供的日历类,日历的作用是提供某个时间点的年、月、日等信息。

2、Calendar能不能创建实例?

Calendar类是一个抽象类(不能直接创建实例),Calendar类如果要创建实例,必须通过getInstance方法构造Calendar的子类对象:

  • //使用 默认时区和区域 设置获取日历。
    Calendar.getInstance();
    
  • //使用 指定的时区和默认语言环境 获取日历。
    Calendar.getInstance(TimeZone zone);
    
  • //使用 默认时区和指定的区域 设置获取日历。
    Calendar.getInstance(Locale aLocale);
    

注意:
该方法返回Calendar类的子类对象;为什么说『返回Calendar类的子类对象』?
首先Calendar类是一个抽象类,所以不存在所谓的Calendar类的实例,其次在地球上有很多不同的时区,不同的时区就要对应不同的Calendar类的的子类(每个国家都有自己的一套日历算法,比如西方的国家的第一个星期大部分为星期日,而中国则为星期一,等等)。

二、GregorianCalendar类:

1、GregorianCalendar介绍

GregorianCalendar类是Calendar类的子类。
GregorianCalendar(公历)是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

2、GregorianCalendar怎么创建实例?

GregorianCalendar可以使用new关键字创建实例,下面是官方给出的构造器方法:
Calendar类和GregorianCalendar类
注意:
月份:一月份是0,二月是1,以此类推,12月是11
星期:周日是1,周一是2,。。。周六是7

3、如何获取和设置具体的年、月、日?

GregorianCalendar提供了获取方法 get() 和设置方法 set()
为了表达希望得到的项,需要借助Calendar类中定义的一些常量,如 Calendar.MONTH 或 Calendar.DAY_OF_WEEK :

get() 示例:

GregorianCalendar now = new GregorianCalendar();
int month = now.get(Calender.MONTH);		//获取月份

set() 示例:

deadline.set(Calendar.YEAR,2001);		//设置年
deadline.set(Calendar.MONTH,Calendar.APRIL);		//设置月份
deadline.set(Calendar.DAY_OF_MONTH,15);		//设置日期

更多关于Calendar类和GregorianCalendar类的API请参考官方文档:
http://www.matools.com/api/java8