java中GregorianCalendar类和Calendar类区别
java中GregorianCalendar类和Calendar类区别:首先,两者性质不同,GregorianCalendar类是具体的子类,可以使用new关键字创建实例;而Calendar是一个抽象父类,不能直接创建实例。其次,两者作用不同,Calendar是java提供的日历类,而GregorianCalendar提供标准日历系统。
1.两者性质不同
Calendar是一个抽象类,不能直接创建实例。如果要创建实例,必须通过getInstance方法构造Calendar的子类对象;而GregorianCalendar类是Calendar的一个具体子类,可以使用new关键字创建实例。
2.两者作用不同
Calendar是java提供的日历类,日历的作用是提供某个时间点的年、月、日等信息。在地球上有很多不同的时区,不同的时区就要对应不同的Calendar类的的子类。Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now = Calendar.getInstance()。
GregorianCalendar类是Calendar类的一个实现类,它提供了世界上大多数国家/地区使用的标准日历系统。它是一种混合日历,可由调用者通过调用setGregorianChange() 来更改起始日期。
简单理解GregorianCalendar类和Calendar类的区别,就是“父亲与儿子”的区别。GregorianCalendar类是Calendar类子类,它继承Calendar类。
延伸阅读
java中Calendar类如何使用
Calendar 类是一个抽象类,它为特定瞬间与YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期)提供了一些方法。创建Calendar对象不能使用new 关键字,但是它提供了一个getInstance() 方法来获得Calendar类的对象。
当创建了一个Calendar对象后,就可以通过Calendar对象中的一些方法来处理日期、时间。Calendar对象可以调用set()方法将日历翻到任何一个时间,当参数year取负数时表示公元前。Calendar对象调用get() 方法可以获取有关年、月、日等时间信息,参数field 的有效值由Calendar静态常量指定。
Calendar类中定义了许多常量,分别表示不同的意义,具体如下:
- Calendar.YEAR:年份。
- Calendar.MONTH:月份。
- Calendar.DATE:日期。
- Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
- Calendar.HOUR:12小时制的小时。
- Calendar.HOUR_OF_DAY:24 小时制的小时。
- Calendar.MINUTE:分钟。
- Calendar.SECOND:秒。
- Calendar.DAY_OF_WEEK:星期几。

