- java.lang.Object
-
- java.util.Calendar
-
- java.util.GregorianCalendar
-
- 实现的所有接口
-
Serializable
,Cloneable
,Comparable<Calendar>
public class GregorianCalendar extends Calendar
GregorianCalendar
是GregorianCalendar
的具体子类,Calendar
提供了世界上大多数人使用的标准日历系统。GregorianCalendar
是一个混合日历,支持Julian和Gregorian日历系统,支持单个不连续性,默认情况下对应公历日历时的格里高利日期(1582年10月15日,某些国家,后来的其他国家)。 调用者可以通过致电setGregorianChange()
更改切换日期。历史上,在那些首先采用公历的国家,1582年10月4日(朱利安)因此随后是1582年10月15日(格里高利安)。 此日历可以正确建模。 在格里高利转换之前,
GregorianCalendar
实现了儒略历。 格里高利历和儒略历之间的唯一区别是闰年规则。 朱利安历法规定了每四年一次的闰年,而格里高利历则省略了不能被400整除的世纪年。GregorianCalendar
实现proleptic格里高利历和罗马儒略历。 也就是说,日期是通过在时间上向后和向前无限地推断当前规则来计算的。 因此,GregorianCalendar
可用于所有年份以产生有意义且一致的结果。 但是,使用GregorianCalendar
获得的日期在历史上仅从公元3月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.周一天参与Julian-Gregorian过渡的年份。所述
getFirstDayOfWeek()
个getMinimalDaysInFirstWeek()
值构建在使用区域设置相关的资源初始化GregorianCalendar
。 The week determination is compatible当所述ISO 8601标准getFirstDayOfWeek()
是MONDAY
和getMinimalDaysInFirstWeek()
是4,其值是在其中标准是优选的语言环境使用。 可以通过调用setFirstDayOfWeek()
和setMinimalDaysInFirstWeek()
明确设置这些值。week year与
WEEK_OF_YEAR
周期同步。 第一周和最后一周(包括)之间的所有周都具有相同的周年值。 因此,一周的第一天和最后一天可能具有不同的日历年值。例如,1998年1月1日是星期四。 如果
getFirstDayOfWeek()
是MONDAY
并且getMinimalDaysInFirstWeek()
是4(ISO 8601标准兼容设置),则1998年第1周从1997年12月29日开始,到1998年1月4日结束。1997年的最后三天是1998年的一周但是,如果getFirstDayOfWeek()
是SUNDAY
,则1998年第1周从1998年1月4日开始,到1998年1月10日结束; 1998年的前三天是1997年第53周的一部分,其一周是1997年。一个月的一周
为
WEEK_OF_MONTH
字段计算的值范围为0到6.一个月的第1周(WEEK_OF_MONTH = 1
)是该getMinimalDaysInFirstWeek()
至少getMinimalDaysInFirstWeek()
个连续日的最早集合,结束于getFirstDayOfWeek()
之前的前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日到星期六,1月3日有WEEK_OF_MONTH
如果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
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
-
-
嵌套类汇总
-
嵌套类/接口声明在类 java.util.Calendar
Calendar.Builder
-
-
字段汇总
字段 变量和类型 字段 描述 static int
AD
ERA
字段的值表示共同时代(Anno Domini),也称为CE。static int
BC
ERA
字段的值,表示共同时代之前(基督之前)的时期,也称为BCE。-
声明的属性在类 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, 字段, 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
-
-
构造方法摘要
构造方法 构造器 描述 GregorianCalendar()
构造一个默认GregorianCalendar
使用默认时区的当前时间的默认FORMAT
语言环境。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
,默认为FORMAT
语言环境。GregorianCalendar(TimeZone zone, Locale aLocale)
根据给定时区中具有给定语言环境的当前时间构造GregorianCalendar
。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 void
add(int field, int amount)
根据日历的规则,将指定(签名)的时间量添加到给定的日历字段。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
。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
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
ZonedDateTime
toZonedDateTime()
将此对象转换为ZonedDateTime
,表示时间线上与此GregorianCalendar
相同的点。-
声明方法的类 java.util.Calendar
after, before, clear, clear, clone, compareTo, complete, get, getAvailableCalendarTypes, getAvailableLocales, getDisplayName, getDisplayNames, getFirstDayOfWeek, getInstance, getInstance, getInstance, getInstance, getMinimalDaysInFirstWeek, getTime, getTimeInMillis, getTimeZone, internalGet, isLenient, isSet, set, set, set, set, setFirstDayOfWeek, setLenient, setMinimalDaysInFirstWeek, setTime, setTimeInMillis, setTimeZone, toInstant, toString
-
-
-
-
字段详细信息
-
BC
public static final int BC
ERA
字段的值,表示共同时代之前(基督之前)的时期,也称为BCE。 的年在过渡从序列BC
到AD
是...,BC 2,BC 1,AD 1,AD 2,...- 另请参见:
-
Calendar.ERA
, 常数字段值
-
AD
public static final int AD
ERA
字段的值表示共同时代(Anno Domini),也称为CE。 的年在过渡从序列BC
到AD
是...,BC 2,BC 1,AD 1,AD 2,...- 另请参见:
-
Calendar.ERA
, 常数字段值
-
-
构造方法详细信息
-
GregorianCalendar
public GregorianCalendar()
构造一个默认GregorianCalendar
使用默认时区的当前时间的默认FORMAT
语言环境。
-
GregorianCalendar
public GregorianCalendar(TimeZone zone)
根据给定时区中的当前时间构造一个GregorianCalendar
,默认为FORMAT
语言环境。- 参数
-
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。 例如,0表示1月份。 -
dayOfMonth
- 用于在日历中设置DAY_OF_MONTH
日历字段的值。
-
GregorianCalendar
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
使用默认语言环境构造一个GregorianCalendar
,并为默认时区设置给定的日期和时间。- 参数
-
year
- 用于在日历中设置YEAR
日历字段的值。 -
month
- 用于在日历中设置MONTH
日历字段的值。 月值基于0。 例如,0表示1月份。 -
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。 例如,0表示1月份。 -
dayOfMonth
- 用于在日历中设置DAY_OF_MONTH
日历字段的值。 -
hourOfDay
- 用于在日历中设置HOUR_OF_DAY
日历字段的值。 -
minute
- 用于在日历中设置MINUTE
日历字段的值。 -
second
- 用于在日历中设置SECOND
日历字段的值。
-
-
方法详细信息
-
setGregorianChange
public void setGregorianChange(Date date)
设置GregorianCalendar
更改日期。 这是从朱利安日期到格里高利日期的转换发生的时间点。 默认值是1582年10月15日(格里高利)。 在此之前,日期将在儒略历中。要获得纯Julian日历,请将更改日期设置为
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
。 当且仅当参数是GregorianCalendar
对象时,结果为true
,该对象表示相同的Calendar
参数和格里高利更改日期下的相同时间值(距离Epoch的毫秒偏移量)。- 重写:
-
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 。 值
字段
通话减去的值之后字段
呼叫之前是amount
,模内所出现的任何溢出字段
。 当字段值超出其范围时发生溢出,结果,下一个较大的字段递增或递减,并将字段值调整回其范围。添加规则2 。 如果预期较小的字段是不变的,但由于更改了
字段
之后其最小值或最大值的变化,它不可能等于其先前值,则将其值调整为尽可能接近其预期值值。 较小的字段表示较小的时间单位。HOUR
是一个比DAY_OF_MONTH
更小的字段。 不对不希望不变的较小字段进行调整。 日历系统确定预期哪些字段是不变的。- Specified by:
-
add
在类Calendar
- 参数
-
字段
- 日历字段。 -
amount
- 要添加到字段中的日期或时间量。 - 异常
-
IllegalArgumentException
-如果字段
是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
不然。 -
字段
- 时间字段。 - 异常
-
IllegalArgumentException
-如果字段
是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
字段保持1999的值,因为它是一个比MONTH
更大的字段。示例 :考虑最初设置为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日和09年6月5,根据之间添加规则2,DAY_OF_WEEK
,不变时改变WEEK_OF_MONTH
,设置为星期二,最接近的可能值至周日(其中星期天是一周的第一天)。- 重写:
-
roll
类Calendar
- 参数
-
字段
- 日历字段。 -
amount
- 要添加到字段
的签名金额。 - 异常
-
IllegalArgumentException
-如果字段
是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
- 参数
-
字段
- 日历字段。 - 结果
- 给定日历字段的最小值。
- 另请参见:
-
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
- 参数
-
字段
- 日历字段。 - 结果
- 给定日历字段的最大值。
- 另请参见:
-
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
- 参数
-
字段
- 日历字段。 - 结果
- 给定日历字段的最小最小值。
- 另请参见:
-
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
- 参数
-
字段
- 日历字段 - 结果
- 给定日历字段的最小最大值。
- 另请参见:
-
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
- 参数
-
字段
- 日历字段 - 结果
-
此
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
- 参数
-
字段
- 日历字段 - 结果
-
此
GregorianCalendar
的时间值的给定字段的最大值 - 从以下版本开始:
- 1.2
- 另请参见:
-
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
-
isWeekDateSupported
public final boolean isWeekDateSupported()
返回true
表明此GregorianCalendar
支持周日期。- 重写:
-
isWeekDateSupported
在类Calendar
- 结果
-
true
(总是) - 从以下版本开始:
- 1.7
- 另请参见:
-
getWeekYear()
,setWeekDate(int,int,int)
,getWeeksInWeekYear()
-
getWeekYear
public int getWeekYear()
返回GregorianCalendar表示的GregorianCalendar
。 1周和星期的最大周数之间的星期中的日期具有相同的星期值,该值可以是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标准不同,并且当
getFirstDayOfWeek()
为MONDAY
且getMinimalDaysInFirstWeek()
为4时,weekOfYear
编号与标准兼容。与
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)
将在此期间返回52:2007年12月31日至12月2008年8月28日。- 重写:
-
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日历系统中的正确日期,该日期系统也将与修改的Julian Days相同。- 结果
- 分区日期时间,表示时间线上与此格里历日历相同的点
- 从以下版本开始:
- 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
-
-