|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util
类 GregorianCalendar
java.lang.Object java.util.Calendar java.util.GregorianCalendar
- 所有已实现的接口:
- Serializable, Cloneable, Comparable<Calendar>
-
public class GregorianCalendar
- extends Calendar
GregorianCalendar
是 Calendar
的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
GregorianCalendar
是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。可由调用方通过调用 setGregorianChange()
来更改起始日期。
历史上,在那些首先采用格里高利历的国家/地区中,1582 年 10 月 4 日(儒略历)之后就是 1582 年 10 月 15 日(格里高利历)。此日历正确地模拟了这些变化。在开始格里高利历之前,GregorianCalendar
实现的是儒略历。格里高利历和儒略历之间的惟一区别就是闰年规则。儒略历指定每 4 年就为闰年,而格里高利历则忽略不能被 400 整除的世纪年。
GregorianCalendar
可实现预期的 格里高利历和儒略历。也就是说,可以通过在时间上无限地向后或向前外推当前规则来计算日期。因此,对于所有的年份,都可以使用 GregorianCalendar
来生成有意义并且一致的结果。但是,采用现代儒略历规则时,使用 GregorianCalendar
得到的日期只在历史上从公元 4 年 3 月 1 日之后是准确的。在此日期之前,闰年规则的应用没有规则性,在 45 BC 之前,甚至不存在儒略历。
在格里高利历创立以前,新年是 3 月 25 日。为了避免混淆,此日历始终使用 1 月 1 日为新年。如果想要格里高利历转换之前并且处于 1 月 1 日和 3 月 24 日之间的日期,则可以进行手动调整。
为 WEEK_OF_YEAR
字段所计算的值的范围从 1 到 53。一年的第一个星期始于 getFirstDayOfWeek()
的最早 7 天,至少包含该年的 getMinimalDaysInFirstWeek()
各天。这取决于 getMinimalDaysInFirstWeek()
、getFirstDayOfWeek()
的值以及 1 月 1 日是星期几。一年的第一个星期和下一年的第一个星期之间的各个星期按顺序从 2 到 52 或 53(根据需要)进行编号。
例如,1998 年 1 月 1 日是星期四。如果 getFirstDayOfWeek()
为 MONDAY
,并且 getMinimalDaysInFirstWeek()
为 4(这些值反映了 ISO 8601 和很多国家/地区标准),则 1998 年的第一个星期开始于 1997 年 12 月 29 日,结束于 1998 年 1 月 4 日。但是,如果 getFirstDayOfWeek()
为 SUNDAY
,那么 1998 年的第一个星期开始于 1998 年 1 月 4 日,结束于 1998 年 1 月 10 日;1998 年头三天是 1997 年第 53 个星期的一部分。
为 WEEK_OF_MONTH
字段所计算的值的范围从 0 到 6。一个月的第一个星期(WEEK_OF_MONTH = 1
的日期)是该月至少连续 getMinimalDaysInFirstWeek()
天中的最早日期,结束于 getFirstDayOfWeek()
的前一天。与一年的第一个星期不同,一个月的第一个星期可能短于 7 天,也不必从 getFirstDayOfWeek()
这一天开始,并且不包括前一个月的日期。在第一个星期之前该月日期的 WEEK_OF_MONTH
为 0。
例如,如果 getFirstDayOfWeek()
为 SUNDAY
,getMinimalDaysInFirstWeek()
为 4,那么 1998 年 1 月的第一个星期是从 1 月 4 日星期日到 1 月 10 日星期六。这些天的 WEEK_OF_MONTH
为 1。1 月 1 日星期四到 1 月 3 日星期六的 WEEK_OF_MONTH
为 0。如果 getMinimalDaysInFirstWeek()
变为 3,则 1 月 1 日到 1 月 3 日的 WEEK_OF_MONTH
为 1。
clear
方法将日历字段设置为未定义。GregorianCalendar
为每个日历字段使用以下默认值(如果该值未定义)。
字段 |
默认值 |
---|---|
ERA |
AD |
YEAR |
1970 |
MONTH |
JANUARY |
DAY_OF_MONTH |
1 |
DAY_OF_WEEK |
一个星期的第一天 |
WEEK_OF_MONTH |
0 |
DAY_OF_WEEK_IN_MONTH |
1 |
AM_PM |
AM |
HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND |
0 |
默认值不适用于以上未列出的字段。
示例:
// get the supported ids for GMT-08:00 (Pacific Standard Time) String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000); // if no ids were returned, something is wrong. get out. if (ids.length == 0) System.exit(0); // begin output System.out.println("Current Time"); // create a Pacific Standard Time time zone SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]); // set up rules for daylight savings time pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000); pdt.setEndRule(Calendar.0ctober, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000); // create a GregorianCalendar with the Pacific Daylight time zone // and the current date and time Calendar calendar = new GregorianCalendar(pdt); Date trialTime = new Date(); calendar.setTime(trialTime); // print out a bunch of interesting things System.out.println("ERA: " + calendar.get(Calendar.ERA)); System.out.println("YEAR: " + calendar.get(Calendar.YEAR)); System.out.println("MONTH: " + calendar.get(Calendar.MONTH)); System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR)); System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH)); System.out.println("DATE: " + calendar.get(Calendar.DATE)); System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR)); System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK)); System.out.println("DAY_OF_WEEK_IN_MONTH: " + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM)); System.out.println("HOUR: " + calendar.get(Calendar.HOUR)); System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE)); System.out.println("SECOND: " + calendar.get(Calendar.SECOND)); System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND)); System.out.println("ZONE_OFFSET: " + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); System.out.println("DST_OFFSET: " + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); System.out.println("Current Time, with hour reset to 3"); calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override calendar.set(Calendar.HOUR, 3); System.out.println("ERA: " + calendar.get(Calendar.ERA)); System.out.println("YEAR: " + calendar.get(Calendar.YEAR)); System.out.println("MONTH: " + calendar.get(Calendar.MONTH)); System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR)); System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH)); System.out.println("DATE: " + calendar.get(Calendar.DATE)); System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR)); System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK)); System.out.println("DAY_OF_WEEK_IN_MONTH: " + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM)); System.out.println("HOUR: " + calendar.get(Calendar.HOUR)); System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE)); System.out.println("SECOND: " + calendar.get(Calendar.SECOND)); System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND)); System.out.println("ZONE_OFFSET: " + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours System.out.println("DST_OFFSET: " + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
字段摘要 | |
---|---|
static int |
AD ERA 字段的值指示公元后(耶稣纪元后)的时期(也称为 CE)。 |
static int |
BC ERA 字段的值指示公元前(Christ 前)的时期(也称为 BCE)。 |
从类 java.util.Calendar 继承的字段 |
---|
AM, AM_PM, APRIL, areFieldsSet, AUGUST, DATE, DAY_OF_MONTH, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, DECEMBER, DST_OFFSET, ERA, FEBRUARY, FIELD_COUNT, fields, FRIDAY, HOUR, HOUR_OF_DAY, isSet, isTimeSet, JANUARY, JULY, JUNE, MARCH, MAY, MILLISECOND, MINUTE, MONDAY, MONTH, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SEPTEMBER, SUNDAY, THURSDAY, time, TUESDAY, UNDECIMBER, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, YEAR, ZONE_OFFSET |
构造方法摘要 | |
---|---|
GregorianCalendar() 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar 。 |
|
GregorianCalendar(int year, int month, int dayOfMonth) 在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar 。 |
|
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute) 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar 。 |
|
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
|
GregorianCalendar(Locale aLocale) 在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar 。 |
|
GregorianCalendar(TimeZone zone) 在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar 。 |
|
GregorianCalendar(TimeZone zone, Locale aLocale) 在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar 。 |
方法摘要 | |
---|---|
void |
add(int field, int amount) 根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。 |
Object |
clone() 创建并返回此对象的一个副本。 |
protected void |
computeFields() 将时间值(从 Epoch 至现在的毫秒偏移量)转换为日历字段值。 |
protected void |
computeTime() 将日历字段值转换为时间值(从 Epoch 至现在的毫秒偏移量)。 |
boolean |
equals(Object obj) 比较此 GregorianCalendar 与指定的 Object 。 |
int |
getActualMaximum(int field) 考虑到给定的时间值和 getFirstDayOfWeek 、getMinimalDaysInFirstWeek 、getGregorianChange 和 getTimeZone 方法的当前值,返回此日历字段可能具有的最大值。 |
int |
getActualMinimum(int field) 考虑到给定的时间值和 getFirstDayOfWeek 、getMinimalDaysInFirstWeek 、getGregorianChange 和 getTimeZone 方法的当前值,返回此日历字段可能具有的最小值。 |
int |
getGreatestMinimum(int field) 返回此 GregorianCalendar 实例给定日历字段的最高的最小值。 |
Date |
getGregorianChange() 获得格里高利历的更改日期。 |
int |
getLeastMaximum(int field) 返回此 GregorianCalendar 实例给定日历字段的最低的最大值。 |
int |
getMaximum(int field) 返回此 GregorianCalendar 实例的给定日历字段的最大值。 |
int |
getMinimum(int field) 返回此 GregorianCalendar 实例的给定日历字段的最小值。 |
TimeZone |
getTimeZone() 获得时区。 |
int |
hashCode() 生成此 GregorianCalendar 对象的哈希码。 |
boolean |
isLeapYear(int year) 确定给定的年份是否为闰年。 |
void |
roll(int field, boolean up) 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。 |
void |
roll(int field, int amount) 向指定日历字段添加有符号的时间量,不更改更大的字段。 |
void |
setGregorianChange(Date date) 设置 GregorianCalendar 的更改日期。 |
void |
setTimeZone(TimeZone zone) 使用给定的时区值来设置时区。 |
从类 java.util.Calendar 继承的方法 |
---|
after, before, clear, clear, compareTo, complete, get, getAvailableLocales, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, toString |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
BC
public static final int BC
-
ERA
字段的值指示公元前(Christ 前)的时期(也称为 BCE)。从BC
到AD
各年转换依次是 2 BC、1 BC、1 AD、2 AD……。- 另请参见:
-
Calendar.ERA
, 常量字段值
AD
public static final int AD
-
ERA
字段的值指示公元后(耶稣纪元后)的时期(也称为 CE)。从BC
到AD
各年转换依次是 2 BC、1 BC、1 AD、2 AD……。- 另请参见:
-
Calendar.ERA
, 常量字段值
构造方法详细信息 |
---|
GregorianCalendar
public GregorianCalendar()
-
在具有默认语言环境的默认时区内使用当前时间构造一个默认的
GregorianCalendar
。
GregorianCalendar
public GregorianCalendar(TimeZone zone)
-
在具有默认语言环境的给定时区内构造一个基于当前时间的
GregorianCalendar
。- 参数:
-
zone
- 给定的时区。
GregorianCalendar
public GregorianCalendar(Locale aLocale)
-
在具有给定语言环境的默认时区内构造一个基于当前时间的
GregorianCalendar
。- 参数:
-
aLocale
- 给定的语言环境。
GregorianCalendar
public GregorianCalendar(TimeZone zone, Locale aLocale)
-
在具有给定语言环境的给定时区内构造一个基于当前时间的
GregorianCalendar
。- 参数:
-
zone
- 给定的时区。 -
aLocale
- 给定的语言环境。
GregorianCalendar
public GregorianCalendar(int year, int month, int dayOfMonth)
-
在具有默认语言环境的默认时区内构造一个带有给定日期设置的
GregorianCalendar
。- 参数:
-
year
- 用来在日历中设置YEAR
日历字段的值。 -
month
- 用来在日历中设置MONTH
日历字段的值。Month 值是基于 0 的,例如,0 表示 1 月。 -
dayOfMonth
- 用来在日历中设置DAY_OF_MONTH
日历字段的值。
GregorianCalendar
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
-
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的
GregorianCalendar
。- 参数:
-
year
- 用来在日历中设置YEAR
日历字段的值。 -
month
- 用来在日历中设置MONTH
日历字段的值。Month 值是基于 0 的,例如,0 表示 1 月。 -
dayOfMonth
- 用来在日历中设置DAY_OF_MONTH
日历字段的值。 -
hourOfDay
- 用来在日历中设置HOUR_OF_DAY
日历字段的值。 -
minute
- 用来在日历中设置MINUTE
日历字段的值。