- java.lang.Object
-
- java.util.Calendar
-
- java.util.GregorianCalendar
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Comparable<Calendar>
public class GregorianCalendar extends Calendar
GregorianCalendar
是的具体子Calendar
,并提供了世界上大多数国家使用的标准日历系统。GregorianCalendar
是一个混合日历,支持朱利安和公历日历系统,支持一个不连续性,默认情况下对应于格里高利日历(公元1582年10月15日,在一些国家,稍后在其他国家)。 主叫方可以通过拨打setGregorianChange()
更改切换日期。历史上,1582年10月4日(朱利安)首先采用公历的那些国家,之后是1582年10月15日(格里高利)。 这个日历模型正确。 在格里高利
GregorianCalendar
之前,GregorianCalendar
执行朱利安历。 公历和儒略历的唯一区别是闰年规则。 朱利安历法每四年规定一次闰年,而公历则省略了不能被400整除的百年。GregorianCalendar
实现proleptic格里高利历和罗马儒略历。 也就是说,日期是通过在时间上无限远地向后和向前推断当前规则来计算的。 因此,可以使用GregorianCalendar
多年来产生有意义和一致的结果。 然而,使用GregorianCalendar
获得的日期从GregorianCalendar
4月1日起才是历史上准确的,当时采用现代朱利安日历规则。 在此之前,闰年的规则是不规则地应用的,而在公元前45年,朱利安历法甚至不存在。在制定公历之前,元旦是3月25日。为了避免混淆,这个日历总是使用1月1日。如果需要在公历转换之前的日期进行手动调整,并且在1月1日之间和3月24日。
Week Of Year and Week Year
为
WEEK_OF_YEAR
字段计算的值范围为1到53.一个日历年的第一周是从getFirstDayOfWeek()
开始的最早的七天期间,从该年起至少包含getMinimalDaysInFirstWeek()
天。 因而它取决于的值getMinimalDaysInFirstWeek()
,getFirstDayOfWeek()
,和一周的一月的一年1周和下一年的1周(不包括)顺序地被编号为2至52或53(除了间1.周一天一年涉及朱利安 - 格里高利转型)。的
getFirstDayOfWeek()
个getMinimalDaysInFirstWeek()
值构建在使用区域设置相关的资源初始化GregorianCalendar
。 The week determination is compatible当所述ISO 8601标准getFirstDayOfWeek()
是MONDAY
和getMinimalDaysInFirstWeek()
是4,其值是在其中标准是优选的语言环境使用。 这些值可以通过调用setFirstDayOfWeek()
和setMinimalDaysInFirstWeek()
来显式设置。A week year与
WEEK_OF_YEAR
周期同步。 第一周和最后一周(含)之间的所有星期都具有相同的周年价值。 因此,一周的第一天和最后几天可能有不同的日历年值。例如,1998年1月1日是星期四。 如果
getFirstDayOfWeek()
是MONDAY
和getMinimalDaysInFirstWeek()
是4(ISO 8601标准兼容环境),那么1998年的第1周从1997年12月29日开始,到1998年1月4日结束。1997年是1998年1997年的最后三天但是,如果getFirstDayOfWeek()
是SUNDAY
,则1998年第1周从1998年1月4日开始,1998年1月10日结束; 1998年的头三天是1997年第53周的一部分,他们的周末是1997年。几个月
为
WEEK_OF_MONTH
字段计算的值范围为0至6.一个月的第一周(WEEK_OF_MONTH = 1
的天WEEK_OF_MONTH = 1
)是该月份至少getMinimalDaysInFirstWeek()
连续天数的最早集合,截止于getFirstDayOfWeek()
之前的一天。 与一年的第1周不同,一个月的第1周可能短于7天,不需要从getFirstDayOfWeek()
开始,不包括上个月的天数。 第1周前一个月的天数为WEEK_OF_MONTH
,为0。例如,如果
getFirstDayOfWeek()
是SUNDAY
和getMinimalDaysInFirstWeek()
是4,那么1998年1月的第一个星期是1月4日星期日到1月10日星期六。这些日子有一个WEEK_OF_MONTH
1月1日星期四到1月3日星期六有一个WEEK_OF_MONTH
为0.如果getMinimalDaysInFirstWeek()
改为3,则1月1日至1月3日期间有一个WEEK_OF_MONTH
。默认字段值
clear
方法设置日历字段未定义。 如果其值未定义,则GregorianCalendar
对每个日历字段使用以下默认值。ERA
AD
YEAR
1970
MONTH
JANUARY
DAY_OF_MONTH
1
DAY_OF_WEEK
the first 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 Saving Time pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000); pdt.setEndRule(Calendar.OCTOBER, -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
- 从以下版本开始:
- 1.1
- 另请参见:
-
TimeZone
, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.Calendar
Calendar.Builder
-
-
Field Summary
Fields Modifier and Type Field 描述 static int
AD
价值ERA
字段表示共同的时代(Anno Domini),也被称为CE。static int
BC
表示ERA
字段的价值,表示在共同时代之前(基督之前),也称为公元前百年。-
Fields inherited from class java.util.Calendar
ALL_STYLES, 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, LONG, LONG_FORMAT, LONG_STANDALONE, MARCH, MAY, MILLISECOND, MINUTE, MONDAY, MONTH, NARROW_FORMAT, NARROW_STANDALONE, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SEPTEMBER, SHORT, SHORT_FORMAT, SHORT_STANDALONE, SUNDAY, THURSDAY, time, TUESDAY, UNDECIMBER, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, YEAR, ZONE_OFFSET
-
-
构造方法摘要
构造方法 Constructor 描述 GregorianCalendar()
使用缺省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)
根据指定时区中的当前时间,使用默认的FORMAT
区域设置构建一个GregorianCalendar
。GregorianCalendar(TimeZone zone, Locale aLocale)
根据给定时区的当前时间,使用给定的区域设置构建一个GregorianCalendar
。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
add(int field, int amount)
根据日历的规则,将指定的(已签名的)时间添加到给定的日历字段。Object
clone()
创建并返回此对象的副本。protected void
computeFields()
将时间值(从 Epoch的毫秒偏移)转换为日历字段值。protected void
computeTime()
将日历字段值转换为时间值(与 Epoch的毫秒偏移量)。boolean
equals(Object obj)
将此GregorianCalendar
比较为Object
。static GregorianCalendar
from(ZonedDateTime zdt)
获取的实例GregorianCalendar
从一个默认的语言环境ZonedDateTime
对象。int
getActualMaximum(int field)
返回此日历字段可能有,考虑到给定的时间值和的当前值中的最大值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。int
getActualMinimum(int field)
返回此日历字段可能有,考虑到给定的时间值和的当前值的最小值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。String
getCalendarType()
作为日历类型返回"gregory"
。int
getGreatestMinimum(int field)
返回此GregorianCalendar
实例的给定日历字段的最高最小值。Date
getGregorianChange()
获取公历日历更改日期。int
getLeastMaximum(int field)
返回此GregorianCalendar
实例的给定日历字段的最低最大值。int
getMaximum(int field)
返回此GregorianCalendar
实例的给定日历字段的GregorianCalendar
。int
getMinimum(int field)
返回此GregorianCalendar
实例的给定日历字段的GregorianCalendar
。TimeZone
getTimeZone()
获取时区。int
getWeeksInWeekYear()
返回周在数量 week year由这代表GregorianCalendar
。int
getWeekYear()
返回 GregorianCalendar代表的GregorianCalendar
。int
hashCode()
生成此GregorianCalendar
对象的哈希码。boolean
isLeapYear(int year)
确定给定年份是否是闰年。boolean
isWeekDateSupported()
返回true
表示此GregorianCalendar
支持周日期。void
roll(int field, boolean up)
在给定时间字段上添加或减少单个时间单位,而不改变较大的字段。void
roll(int field, int amount)
向指定的日历字段添加签名金额,而不更改较大的字段。void
setGregorianChange(Date date)
设置GregorianCalendar
更改日期。void
setTimeZone(TimeZone zone)
以给定的时区值设置时区。void
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
ZonedDateTime
toZonedDateTime()
将此对象转换为ZonedDateTime
,表示时间线上与该GregorianCalendar
相同的点。-
Methods inherited from class java.util.Calendar
after, before, clear, clear, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, toInstant, toString
-
-
-
-
字段详细信息
-
BC
public static final int BC
ERA
字段的价值表示共同时代之前(在基督之前)的时期,也称为公元前9世纪。 从BC
转为AD
是...,2 BC,1 BC,1 AD,2 AD,...- 另请参见:
-
Calendar.ERA
, Constant Field Values
-
AD
public static final int AD
ERA
字段的值代表共同时代(Anno Domini),也称为CE。 从BC
转为AD
是...,公元前2年,公元前1年,公元1年,公元2年- 另请参见:
-
Calendar.ERA
, Constant Field Values
-
-
构造方法详细信息
-
GregorianCalendar
public GregorianCalendar()
构造一个默认GregorianCalendar
使用默认时区的当前时间的默认FORMAT
语言环境。
-
GregorianCalendar
public GregorianCalendar(TimeZone zone)
根据指定时区的当前时间,使用默认的FORMAT
区域设置构建一个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
日历字段的值。 月值为0。 例如,1月份为0。 -
dayOfMonth
- 用于设置日历中的DAY_OF_MONTH
日历字段的值。
-
GregorianCalendar
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
构造一个GregorianCalendar
,其默认时区的默认语言环境设置了给定的日期和时间。- 参数
-
year
- 用于设置日历中的YEAR
日历字段的值。 -
month
- 用于设置日历中MONTH
日历字段的值。 月值为0。 例如,1月份为0。 -
dayOfMonth
- 用于设置日历中DAY_OF_MONTH
日历字段的值。 -
hourOfDay
- 用于设置日历中HOUR_OF_DAY
日历字段的值。 -
minute
- 用于设置日历中MINUTE
日历字段的值。
-
GregorianCalendar
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
构造一个GregorianCalendar,其中给定的日期和时间为默认时区设置为默认语言环境。- 参数
-
year
- 用于设置日历中YEAR
日历字段的值。 -
month
- 用于设置日历中MONTH
日历字段的值。 月值为0。 例如,1月份为0。 -
dayOfMonth
- 用于设置日历中DAY_OF_MONTH
日历字段的值。 -
hourOfDay
- 用于设置日历中HOUR_OF_DAY
日历字段的值。 -
minute
- 用于设置日历中MINUTE
日历字段的值。 -
second
- 用于设置日历中SECOND
日历字段的值。
-
-
方法详细信息
-
setGregorianChange
public void setGregorianChange(Date date)
设置GregorianCalendar
更改日期。 这是从朱利安到达格里高利日期的时间点。 默认是1582年10月15日(公历)。 在此之前,日期将在朱利安历。要获得纯粹的朱利安历法,请将更改日期设置为
Date(Long.MAX_VALUE)
。 要获取纯公历,请将更改日期设置为Date(Long.MIN_VALUE)
。- 参数
-
date
- 给定的格里高利切割日期。
-
getGregorianChange
public final Date getGregorianChange()
获取公历日历更改日期。 这是从朱利安到达格里高利日期的时间点。 默认是1582年10月15日(公历)。 在此之前,日期将在朱利安历。- 结果
-
这个
GregorianCalendar
对象的格里高利切割日期。
-
isLeapYear
public boolean isLeapYear(int year)
确定给定年份是否是闰年。 如果给定年份是闰年,则返回true
。 要指定BC年数,必须给出1 - year number
。 例如,年份BC 4被指定为-3。- 参数
-
year
- 给定年份。 - 结果
-
true
如果给定的一年是闰年;false
否则。
-
getCalendarType
public String getCalendarType()
作为日历类型返回"gregory"
。- 重写:
-
getCalendarType
在Calendar
- 结果
-
"gregory"
- 从以下版本开始:
- 1.8
- 另请参见:
-
Locale extensions ,
Locale.Builder.setLocale(Locale)
,Locale.Builder.setUnicodeLocaleKeyword(String, String)
-
equals
public boolean equals(Object obj)
将此GregorianCalendar
与指定的Object
。 其结果是true
当且仅当参数是GregorianCalendar
对象,表示同一时间值(毫秒从偏移Epoch下相同)Calendar
参数和阳历更改日期与此对象。- 重写:
-
equals
在Calendar
- 参数
-
obj
- 要比较的对象。 - 结果
-
true
如果此对象等于obj
; 否则为false
。 - 另请参见:
-
Calendar.compareTo(Calendar)
-
hashCode
public int hashCode()
生成此GregorianCalendar
对象的哈希码。- 重写:
-
hashCode
在Calendar
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
add
public void add(int field, int amount)
根据日历的规则,将指定的(已签名的)时间添加到给定的日历字段。添加规则1 。 呼叫后
field
的值减去呼叫前的field
的值为amount
,模数发生在field
任何溢出。 当字段值超出其范围时发生溢出,结果是下一个较大的字段递增或递减,并将字段值调整回其范围。添加规则2 。 如果一个较小的领域预计是不变的,但是由于
field
之后的最小或最大值的变化,它不可能等于其先前的值,所以其值被调整为尽可能接近其预期值。 较小的字段表示较小的时间单位。HOUR
是一个比DAY_OF_MONTH
更小的字段。 没有对未预期不变的较小的领域进行调整。 日历系统确定预期哪些字段是不变的。- Specified by:
-
add
在Calendar
- 参数
-
field
- 日历字段。 -
amount
- 要添加到字段的日期或时间的数量。 - 异常
-
IllegalArgumentException
-如果field
是ZONE_OFFSET
,DST_OFFSET
,或未知的,或者如果任何日历字段具有在非宽松模式外的范围内的值。 - 另请参见:
-
Calendar.roll(int,int)
,Calendar.set(int,int)
-
roll
public void roll(int field, boolean up)
在给定时间字段上添加或减少单个时间单位,而不改变较大的字段。例如 :考虑一个
GregorianCalendar
最初被设置为1999调用12月31日,roll(Calendar.MONTH, true)
套日历至1999年1月31日,该YEAR
场是不变的,因为它比一个更大的领域MONTH
。- Specified by:
-
roll
在Calendar
- 参数
-
up
- 指示指定日历字段的值是要卷起还是滚动。 使用true
如果卷起,false
否则。 -
field
- 时间字段。 - 异常
-
IllegalArgumentException
-如果field
是ZONE_OFFSET
,DST_OFFSET
,或未知的,或者如果任何日历字段具有在非宽松模式外的范围内的值。 - 另请参见:
-
add(int,int)
,Calendar.set(int,int)
-
roll
public void roll(int field, int amount)
向指定的日历字段添加签名金额,而不更改较大的字段。 负滚动量意味着从字段中减去而不改变较大的字段。 如果指定的数量为0,则此方法不执行任何操作。此方法调用
Calendar.complete()
之前添加金额,以便所有的日历字段被归一化。 如果任何日历字段在非宽松模式下具有超出范围值,则抛出一个IllegalArgumentException
。例如 :考虑一个
GregorianCalendar
最初被设置为1999调用8月31日,roll(Calendar.MONTH, 8)
套日历1999年 4月30日。 使用GregorianCalendar
,该DAY_OF_MONTH
场不能在一个月四月是31。DAY_OF_MONTH
被设置为最接近的可能值30.由于YEAR
字段比MONTH
更大,所以YEAR
字段保持1999的值。示例 :考虑一个原始设置为1999年6月6日星期日的
GregorianCalendar
呼叫roll(Calendar.WEEK_OF_MONTH, -1)
将日历设置为1999年6月1日星期二,而呼叫add(Calendar.WEEK_OF_MONTH, -1)
将日历设置为1999年5月30日星期日。这是因为滚动规则强加了一个附加约束:该MONTH
当不能改变WEEK_OF_MONTH
卷。 加上规则1,结果日期必须在6月1日星期六至6月5日星期六之间。根据附加规则DAY_OF_WEEK
(更改WEEK_OF_MONTH
时不变量)设置为星期二,最接近可能的星期日值(其中周日是本周的第一天)。- 重写:
-
roll
在Calendar
- 参数
-
field
- 日历字段。 -
amount
- 签收金额加至field
。 - 异常
-
IllegalArgumentException
-如果field
是ZONE_OFFSET
,DST_OFFSET
,或未知的,或者如果任何日历字段具有在非宽松模式外的范围内的值。 - 从以下版本开始:
- 1.2
- 另请参见:
-
roll(int,boolean)
,add(int,int)
,Calendar.set(int,int)
-
getMinimum
public int getMinimum(int field)
返回此GregorianCalendar
实例的给定日历字段的GregorianCalendar
。 最小值被定义为通过返回最小值get
方法为任何可能的时间值,同时考虑到的电流值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。- Specified by:
-
getMinimum
在Calendar
- 参数
-
field
- 日历字段。 - 结果
- 给定日历字段的最小值。
- 另请参见:
-
getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getMaximum
public int getMaximum(int field)
返回此GregorianCalendar
实例的给定日历字段的GregorianCalendar
。 最大值被定义为通过返回的最大值get
方法为任何可能的时间值,同时考虑到的电流值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。- Specified by:
-
getMaximum
在Calendar
- 参数
-
field
- 日历字段。 - 结果
- 给定日历字段的最大值。
- 另请参见:
-
getMinimum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getGreatestMinimum
public int getGreatestMinimum(int field)
返回此GregorianCalendar
实例的给定日历字段的最高最小值。 最高的最小值被定义为返回的最大价值getActualMinimum(int)
任何可能的时间值,同时考虑到的当前值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。- Specified by:
-
getGreatestMinimum
在Calendar
- 参数
-
field
- 日历字段。 - 结果
- 给定日历字段的最低最小值。
- 另请参见:
-
getMinimum(int)
,getMaximum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getLeastMaximum
public int getLeastMaximum(int field)
返回此GregorianCalendar
实例的给定日历字段的最低最大值。 的最低的最大值被定义为通过返回最小值getActualMaximum(int)
任何可能的时间值,同时考虑到的电流值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。- Specified by:
-
getLeastMaximum
在Calendar
- 参数
-
field
- 日历字段 - 结果
- 给定日历字段的最低最大值。
- 另请参见:
-
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getActualMinimum(int)
,getActualMaximum(int)
-
getActualMinimum
public int getActualMinimum(int field)
返回此日历字段可能有,考虑到给定的时间值和的当前值的最小值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。例如,如果公历的更改日期是1970年1月10日,而这个
GregorianCalendar
的日期是1970年1月20日,则DAY_OF_MONTH
字段的实际最小值为10,因为1970年1月10日的前一个日期是1996年12月27日(在朱利安历)。 因此,1969年12月28日至1970年1月9日不存在。- 重写:
-
getActualMinimum
在Calendar
- 参数
-
field
- 日历字段 - 结果
-
给定字段的最小值为这个
GregorianCalendar
的时间值 - 从以下版本开始:
- 1.2
- 另请参见:
-
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMaximum(int)
-
getActualMaximum
public int getActualMaximum(int field)
返回此日历字段可能有,考虑到给定的时间值和的当前值中的最大值getFirstDayOfWeek
,getMinimalDaysInFirstWeek
,getGregorianChange
和getTimeZone
方法。 例如,如果该实例的日期是2004年2月1日,则DAY_OF_MONTH
字段的实际最大值为29,因为2004年是闰年,如果此实例的日期是2005年2月1日,则为28。该方法基于
YEAR
(日历年)值计算最大值WEEK_OF_YEAR
,而不是week year 。 呼叫getWeeksInWeekYear()
得到的最大值WEEK_OF_YEAR
在此的一周年GregorianCalendar
。- 重写:
-
getActualMaximum
在Calendar
- 参数
-
field
- 日历字段 - 结果
-
给定字段的最大值为这个
GregorianCalendar
的时间值 - 从以下版本开始:
- 1.2
- 另请参见:
-
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
-
getTimeZone
public TimeZone getTimeZone()
描述从类复制:Calendar
获取时区。- 重写:
-
getTimeZone
在Calendar
- 结果
- 与该日历相关联的时区对象。
-
setTimeZone
public void setTimeZone(TimeZone zone)
描述从类复制:Calendar
以给定的时区值设置时区。- 重写:
-
setTimeZone
在Calendar
- 参数
-
zone
- 给定的时区。
-
isWeekDateSupported
public final boolean isWeekDateSupported()
返回true
表示此GregorianCalendar
支持周日期。- 重写:
-
isWeekDateSupported
在Calendar
- 结果
-
true
(总是) - 从以下版本开始:
- 1.7
- 另请参见:
-
getWeekYear()
,setWeekDate(int,int,int)
,getWeeksInWeekYear()
-
getWeekYear
public int getWeekYear()
返回由GregorianCalendar表示的GregorianCalendar
。 星期之间的星期之间的星期数与周年的最大周数有相同的周年值,可能是在YEAR
(日历年)值之前或之后的一年。在计算周年之前,此方法调用
Calendar.complete()
。- 重写:
-
getWeekYear
在Calendar
- 结果
-
这个星期由这个
GregorianCalendar
代表。 如果ERA
值为BC
,则年份为0或负数:BC 1为0,BC 2为-1,BC 3为-2,依此类推。 - 异常
-
IllegalArgumentException
- 如果任何日历字段在非宽松模式下无效。 - 从以下版本开始:
- 1.7
- 另请参见:
-
isWeekDateSupported()
,getWeeksInWeekYear()
,Calendar.getFirstDayOfWeek()
,Calendar.getMinimalDaysInFirstWeek()
-
setWeekDate
public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
设置此GregorianCalendar
由日期符给出的日期-weekYear
,weekOfYear
,并dayOfWeek
。weekOfYear
遵循WEEK_OF_YEAR
numbering 。dayOfWeek
值必须是DAY_OF_WEEK
的值之一:SUNDAY
到SATURDAY
。请注意,数字星期表示与ISO 8601标准不同,
weekOfYear
编号与getFirstDayOfWeek()
为MONDAY
和getMinimalDaysInFirstWeek()
为4时的标准兼容。与
set
方法不同,所有的日历字段和时间值都是在返回时计算的。如果
weekOfYear
在weekYear
的有效周期范围之内,则weekYear
和weekOfYear
值将在宽松模式下进行调整,或者在非宽松模式下抛出IllegalArgumentException
。- 重写:
-
setWeekDate
在Calendar
- 参数
-
weekYear
- 星期 -
weekOfYear
- 周数基于weekYear
-
dayOfWeek
- 星期几值:DAY_OF_WEEK
字段的常数之一:SUNDAY
,...,SATURDAY
。 - 异常
-
IllegalArgumentException
- 如果任何给定的日期说明符无效,或者如果任何日历字段与非宽松模式中的给定日期说明符不一致 - 从以下版本开始:
- 1.7
- 另请参见:
-
isWeekDateSupported()
,Calendar.getFirstDayOfWeek()
,Calendar.getMinimalDaysInFirstWeek()
-
getWeeksInWeekYear
public int getWeeksInWeekYear()
返回周在数量week year由这代表GregorianCalendar
。例如,如果这个
GregorianCalendar
的日期是2008年12月31日,有the ISO 8601 compatible setting ,则该方法将在2008年12月29日至2010年1月3日期间返回53,而getActualMaximum(WEEK_OF_YEAR)
将在2007年12月31日至12月期间返回52 28,2008。- 重写:
-
getWeeksInWeekYear
在Calendar
- 结果
- 在一周的星期数。
- 从以下版本开始:
- 1.7
- 另请参见:
-
Calendar.WEEK_OF_YEAR
,getWeekYear()
,getActualMaximum(int)
-
computeFields
protected void computeFields()
- Specified by:
-
computeFields
在Calendar
- 另请参见:
-
Calendar.complete()
-
computeTime
protected void computeTime()
将日历字段值转换为时间值(与 Epoch的毫秒偏移量)。- Specified by:
-
computeTime
在Calendar
- 异常
-
IllegalArgumentException
- 如果任何日历字段无效。 - 另请参见:
-
Calendar.complete()
,Calendar.computeFields()
-
toZonedDateTime
public ZonedDateTime toZonedDateTime()
将该对象转换为ZonedDateTime
,表示时间线上与该GregorianCalendar
相同的点。由于此对象支持Julian-Gregorian切换日期,并且
ZonedDateTime
不支持,因此,生成的年,月和日可能具有不同的值。 结果将表示ISO日历系统中的正确日期,对于修改的朱利安天数也将是相同的值。- 结果
- 一个分区的日期时间代表这个格式日历在时间线上的同一点
- 从以下版本开始:
- 1.8
-
from
public static GregorianCalendar from(ZonedDateTime zdt)
获取的实例GregorianCalendar
从一个默认的语言环境ZonedDateTime
对象。由于
ZonedDateTime
不支持朱利安- Gregorian转换日期和使用ISO日历系统,返回的GregorianCalendar是一个纯粹的阳历和使用ISO 8601标准定义的一周,其中有MONDAY
为FirstDayOfWeek
和4
作为价值MinimalDaysInFirstWeek
。ZoneDateTime
可以在未来进一步存储时间点,进一步在GregorianCalendar
。 在这种情况下,此方法将抛出一个IllegalArgumentException
异常。- 参数
-
zdt
- 要转换的划分的日期时间对象 - 结果
- 该格式的日历表示与分区日期时间相同的时间线上的相同点
- 异常
-
NullPointerException
- 如果zdt
为空 -
IllegalArgumentException
- 如果分区的日期时间太大,无法表示为GregorianCalendar
- 从以下版本开始:
- 1.8
-
-