public class GregorianCalendar extends Calendar
GregorianCalendar
是的具体子Calendar
,并提供了世界上大多数国家使用的标准日历系统。
GregorianCalendar
是一个混合日历,支持朱利安和公历日历系统,并支持一个不连续性,默认情况下相当于格里高利日历(公元1582年10月15日,在一些国家,后来在其他国家)。 切换日期可能由呼叫者通过调用setGregorianChange()
更改 。
历史上,1582年10月4日(朱利安)首先采用公历的那些国家,之后是1582年10月15日(格里高利)。 这个日历模型正确。 在格里高利转换之前, GregorianCalendar
实现了朱利安历。 公历和儒略历的唯一区别是闰年规则。 朱利安历法每四年规定一次闰年,而公历则省略了不能被400整除的百年。
GregorianCalendar
proptptic 格里高利和朱利安日历。 也就是说,日期是通过在时间上无限远地向后和向前推断当前规则来计算的。 因此, GregorianCalendar
可以用于多年来产生有意义和一致的结果。 然而,使用GregorianCalendar
获得的日期从公历4月1日起才是历史上准确的,当时采用现代朱利安日历规则。 在此之前,闰年的规则是不规则地应用的,而在公元前45年,朱利安历法甚至不存在。
在制定公历之前,元旦是3月25日。为了避免混淆,这个日历总是使用1月1日。如果需要在公历转换之前的日期进行手动调整,并且在1月1日之间和3月24日。
WEEK_OF_YEAR
字段计算的值范围为1到53.一个日历年的第一周是从getFirstDayOfWeek()
开始的最早的七天期间,其中包含至少getMinimalDaysInFirstWeek()
天。 因而它取决于的值getMinimalDaysInFirstWeek()
, getFirstDayOfWeek()
,和一周的一月的一年1周和下一年的1周(不包括)顺序地被编号为2至52或53(除了间1.周一天一年涉及朱利安 - 格里高利转型)。
当getFirstDayOfWeek()
, 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
字段WEEK_OF_MONTH
值范围为0至6.一个月的第一周( WEEK_OF_MONTH = 1
)是该月份至少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月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
TimeZone
, Serialized Form
Calendar.Builder
Modifier and Type | Field and Description |
---|---|
static int |
AD
价值
ERA 字段表示共同时代(Anno Domini),也称为CE。
|
static int |
BC
ERA 字段的价值表示在共同时代之前(在基督之前),也称为公元前9世纪。
|
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 and Description |
---|
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 。
|
Modifier and Type | Method and Description |
---|---|
void |
add(int field, int amount)
根据日历的规则,将指定的(已签名的)时间添加到给定的日历字段。
|
Object |
clone()
创建并返回此对象的副本。
|
protected void |
computeFields()
时间值(从毫秒偏移转换
Epoch )中的日历字段值。
|
protected void |
computeTime()
日历字段值转换为时间值(毫秒从偏置
Epoch )。
|
boolean |
equals(Object obj)
将此
GregorianCalendar 与指定的Object进行
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 。
|
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
public static final int BC
ERA
字段的价值,表示在共同时代之前(基督之前),也称为公元前百年。
从BC
到AD
是...,公元前2年,公元前1年,公元1年,公元2年
Calendar.ERA
,
Constant Field Values
public static final int AD
ERA
字段的价值指出了共同的时代(Anno Domini),也被称为CE。
从BC
到AD
是...,公元前2年,公元前1年,公元1年,公元2年
Calendar.ERA
,
Constant Field Values
public GregorianCalendar()
GregorianCalendar
使用默认时区的当前时间的默认
FORMAT
语言环境。
public GregorianCalendar(TimeZone zone)
GregorianCalendar
基于与默认定的时区当前时间
FORMAT
区域。
zone
- 给定的时区。
public GregorianCalendar(Locale aLocale)
GregorianCalendar
。
aLocale
- 给定的区域设置。
public GregorianCalendar(TimeZone zone, Locale aLocale)
GregorianCalendar
。
zone
- 给定的时区。
aLocale
- 给定的区域设置。
public GregorianCalendar(int year, int month, int dayOfMonth)
GregorianCalendar
,其中给定日期在默认时区中设置为默认语言环境。
year
- 用于设置日历中的
YEAR
日历字段的值。
month
- 用于在日历中设置MONTH
日历字段的值。
月值为0。
例如,1月份为0。
dayOfMonth
- 用于在日历中设置
DAY_OF_MONTH
日历字段的值。
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
日历字段的值。
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
year
- 用于在日历中设置
YEAR
日历字段的值。
month
- 用于设置日历中的MONTH
日历字段的值。
月值为0。
例如,1月份为0。
dayOfMonth
- 用于设置日历中的
DAY_OF_MONTH
日历字段的值。
hourOfDay
- 用于在日历中设置
HOUR_OF_DAY
日历字段的值。
minute
- 用于设置日历中的
MINUTE
日历字段的值。
second
- 用于在日历中设置
SECOND
日历字段的值。
public void setGregorianChange(Date date)
GregorianCalendar
更改日期。
这是从朱利安到达格里高利日期的时间点。
默认是1582年10月15日(公历)。
在此之前,日期将在朱利安历。
要获得纯粹的朱利安历,请将更改日期设置为Date(Long.MAX_VALUE)
。 要获得纯公历,请将更改日期设置为Date(Long.MIN_VALUE)
。
date
- 给定的公历切割日期。
public final Date getGregorianChange()
GregorianCalendar
对象的格里高利割接日期。
public boolean isLeapYear(int year)
true
。
要指定BC年数,必须给出1 - year number
。
例如,年份BC 4被指定为-3。
year
- 给定的一年。
true
如果给定年份是闰年;
false
否则。
public String getCalendarType()
"gregory"
作为日历类型。
getCalendarType
在类别
Calendar
"gregory"
Locale.Builder.setLocale(Locale)
,
Locale.Builder.setUnicodeLocaleKeyword(String, String)
public boolean equals(Object obj)
GregorianCalendar
与指定的Object进行Object
。
其结果是true
当且仅当参数是GregorianCalendar
对象,表示同一时间值(毫秒从偏移Epoch下相同) Calendar
参数和阳历更改日期与此对象。
equals
在类别
Calendar
obj
- 要比较的对象。
true
如果这个对象等于obj
;
false
否则。
Calendar.compareTo(Calendar)
public int hashCode()
GregorianCalendar
对象的哈希码。
hashCode
在
Calendar
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public void add(int field, int amount)
添加规则1 。 field
之后的电话减去field
之前的电话是amount
,模数发生在field
任何溢出。 当字段值超出其范围时发生溢出,结果是下一个较大的字段递增或递减,并将字段值调整回其范围。
添加规则2 。 如果一个较小的领域预计是不变的,但是它不可能等于其先前的价值,因为field
改变后的最小或最大值的变化,那么其价值被调整为尽可能接近其预期值。 较小的字段表示较小的时间单位。 HOUR
是一个比DAY_OF_MONTH
更小的字段。 没有对未预期不变的较小的领域进行调整。 日历系统确定预期哪些字段是不变的。
add
在类别
Calendar
field
- 日历字段。
amount
- 要添加到该字段的日期或时间的数量。
IllegalArgumentException
-如果
field
是
ZONE_OFFSET
,
DST_OFFSET
,或未知的,或者如果任何日历字段具有在非宽松模式外的范围内的值。
Calendar.roll(int,int)
,
Calendar.set(int,int)
public void roll(int field, boolean up)
示例 :考虑一个GregorianCalendar
设置为1999年12月31日的GregorianCalendar.呼叫roll(Calendar.MONTH, true)
将日历设置为1999年1月31日YEAR
字段未更改,因为它是一个比MONTH
更大的字段。
roll
在
Calendar
up
- 指示指定日历字段的值是要卷起还是滚动。
使用true
如果卷起, false
其他。
field
- 时间字段。
IllegalArgumentException
-如果
field
是
ZONE_OFFSET
,
DST_OFFSET
,或未知的,或者如果任何日历字段具有在非宽松模式外的范围内的值。
add(int,int)
,
Calendar.set(int,int)
public void roll(int field, int amount)
此方法在添加金额之前调用Calendar.complete()
,以便所有日历字段被归一化。 如果任何日历字段在非宽松模式下具有超出范围值,则抛出IllegalArgumentException
。
示例 :考虑一个GregorianCalendar
设置为1999年8月31日的roll(Calendar.MONTH, 8)
呼叫roll(Calendar.MONTH, 8)
将日历设置为1999年4月30 日 。 使用GregorianCalendar
,该DAY_OF_MONTH
场不能在一个月四月31。 DAY_OF_MONTH
设置为最接近的可能值30.由于YEAR
字段比MONTH
更大,所以YEAR
字段保持1999的值。
示例 :考虑一个GregorianCalendar
设置为1999年6月6日星期六的roll(Calendar.WEEK_OF_MONTH, -1)
呼叫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
field
- 日历字段。
amount
- 签收金额加至
field
。
IllegalArgumentException
-如果
field
是
ZONE_OFFSET
,
DST_OFFSET
,或未知的,或者如果任何日历字段具有在非宽松模式外的范围内的值。
roll(int,boolean)
,
add(int,int)
,
Calendar.set(int,int)
public int getMinimum(int field)
GregorianCalendar
实例的给定日历字段的GregorianCalendar
。
最小值被定义为通过返回最小值get
方法为任何可能的时间值,同时考虑到的电流值getFirstDayOfWeek
, getMinimalDaysInFirstWeek
, getGregorianChange
和getTimeZone
方法。
getMinimum
在类别
Calendar
field
- 日历字段。
getMaximum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public int getMaximum(int field)
GregorianCalendar
实例的给定日历字段的GregorianCalendar
。
最大值被定义为通过返回的最大的值get
方法为任何可能的时间值,同时考虑到的电流值getFirstDayOfWeek
, getMinimalDaysInFirstWeek
, getGregorianChange
和getTimeZone
方法。
getMaximum
在类别
Calendar
field
- 日历字段。
getMinimum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public int getGreatestMinimum(int field)
GregorianCalendar
实例的给定日历字段的最高最小值。
最高的最小值被定义为返回的最大价值getActualMinimum(int)
任何可能的时间值,同时考虑到的当前值getFirstDayOfWeek
, getMinimalDaysInFirstWeek
, getGregorianChange
和getTimeZone
方法。
getGreatestMinimum
在类别
Calendar
field
- 日历字段。
getMinimum(int)
,
getMaximum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
public int getLeastMaximum(int field)
GregorianCalendar
实例的给定日历字段的最低最大值。
的最低的最大值被定义为通过返回最小值getActualMaximum(int)
任何可能的时间值,同时考虑到的电流值getFirstDayOfWeek
, getMinimalDaysInFirstWeek
, getGregorianChange
和getTimeZone
方法。
getLeastMaximum
在
Calendar
field
- 日历字段
getMinimum(int)
,
getMaximum(int)
,
getGreatestMinimum(int)
,
getActualMinimum(int)
,
getActualMaximum(int)
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
的时间值
getMinimum(int)
,
getMaximum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMaximum(int)
public int getActualMaximum(int field)
getFirstDayOfWeek
, getMinimalDaysInFirstWeek
, getGregorianChange
和getTimeZone
方法。
例如,如果这个实例的日期是2004年2月1日,则DAY_OF_MONTH
字段的实际最大值为29,因为2004年是闰年,如果此实例的日期是2005年2月1日,则为28。
这种方法计算的最大值WEEK_OF_YEAR
基础上, YEAR
(日历年)值,而不是week year 。 呼叫getWeeksInWeekYear()
得到的最大值WEEK_OF_YEAR
在此的一周年GregorianCalendar
。
getActualMaximum
在类别
Calendar
field
- 日历字段
GregorianCalendar
的时间值
getMinimum(int)
,
getMaximum(int)
,
getGreatestMinimum(int)
,
getLeastMaximum(int)
,
getActualMinimum(int)
public TimeZone getTimeZone()
Calendar
getTimeZone
在
Calendar
public void setTimeZone(TimeZone zone)
Calendar
复制
setTimeZone
在类别
Calendar
zone
- 给定的时区。
public final boolean isWeekDateSupported()
true
表示此
GregorianCalendar
支持周日期。
isWeekDateSupported
在类别
Calendar
true
(总是)
getWeekYear()
,
setWeekDate(int,int,int)
,
getWeeksInWeekYear()
public int getWeekYear()
GregorianCalendar
。
星期之间的星期之间的星期数与周年的最大星期数有相同的周年值,可能在YEAR
(日历年)值之前或之后的一年。
在计算周年之前,此方法调用Calendar.complete()
。
getWeekYear
在类别
Calendar
GregorianCalendar
。
如果ERA
值为BC
,则年份由0或负数表示:BC 1为0,BC 2为-1,BC 3为-2,依此类推。
IllegalArgumentException
- 如果任何日历字段在非宽松模式下无效。
isWeekDateSupported()
,
getWeeksInWeekYear()
,
Calendar.getFirstDayOfWeek()
,
Calendar.getMinimalDaysInFirstWeek()
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
范围weekYear
, weekYear
和weekOfYear
值将以宽松模式进行调整,否则IllegalArgumentException
非宽松模式抛出。
setWeekDate
在类别
Calendar
weekYear
- 周年
weekOfYear
- 周数基于
weekYear
dayOfWeek
- 星期几值:
DAY_OF_WEEK
字段的
常数之一:
SUNDAY
,...,
SATURDAY
。
IllegalArgumentException
- 如果任何给定的日期说明符无效,或者如果任何日历字段与非宽松模式中的给定日期说明符不一致
isWeekDateSupported()
,
Calendar.getFirstDayOfWeek()
,
Calendar.getMinimalDaysInFirstWeek()
public int getWeeksInWeekYear()
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
Calendar.WEEK_OF_YEAR
,
getWeekYear()
,
getActualMaximum(int)
protected void computeFields()
computeFields
在类别
Calendar
Calendar.complete()
protected void computeTime()
computeTime
在类别
Calendar
IllegalArgumentException
- 如果任何日历字段无效。
Calendar.complete()
,
Calendar.computeFields()
public ZonedDateTime toZonedDateTime()
ZonedDateTime
表示基于时间线,因为这同一点GregorianCalendar
。
由于该对象支持Julian-Gregorian切换日期,并且ZonedDateTime
不支持,所以可能产生的年,月和日将具有不同的值。 结果将表示ISO日历系统中的正确日期,对于修改的朱利安天数也将是相同的值。
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