- 所有已实现的接口:
-
Serializable
,Cloneable
,Comparable<Calendar>
- 直接已知的子类:
-
GregorianCalendar
Calendar
类是一个抽象类,提供了在特定时间点和一组日历字段(如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等)之间进行转换的方法,以及用于操作日历字段(例如获取下周的日期)的方法。时间点可以用距离纪元(Epoch)的毫秒值来表示,纪元是1970年1月1日00:00:00.000 GMT(公历)。该类还提供了额外的字段和方法,用于在包外实现具体的日历系统。这些字段和方法被定义为protected
。
与其他区域敏感类一样,Calendar
提供了一个类方法getInstance
,用于获取这种类型的通用对象。 Calendar
的getInstance
方法返回一个Calendar
对象,其日历字段已经初始化为当前日期和时间:
Calendar rightNow = Calendar.getInstance();
Calendar
对象可以生成实现特定语言和日历样式(例如日本-公历、日本-传统)的日期时间格式化所需的所有日历字段值。 Calendar
定义了某些日历字段返回的值的范围,以及它们的含义。例如,所有日历系统的第一个月的值为MONTH == JANUARY
。其他值由具体的子类定义,例如ERA
。有关详细信息,请参阅各个字段的文档和子类文档。
获取和设置日历字段值
可以通过调用set
方法来设置日历字段值。在Calendar
中设置的任何字段值在需要计算其时间值(距离纪元的毫秒数)或日历字段值时不会被解释。调用get
、getTimeInMillis
、getTime
、add
和roll
会涉及这种计算。除非另有说明,否则任何包含参数int field
的Calendar
方法如果指定的字段超出范围(field
< 0 || field
>= FIELD_COUNT
)将抛出ArrayIndexOutOfBoundsException
。
宽松性
Calendar
有两种解释日历字段的模式,即宽松和非宽松。当Calendar
处于宽松模式时,它接受比其生成的更广泛范围的日历字段值。当Calendar
重新计算要由get()
返回的日历字段值时,所有日历字段都会被标准化。例如,宽松的GregorianCalendar
将MONTH == JANUARY
、DAY_OF_MONTH == 32
解释为2月1日。
当Calendar
处于非宽松模式时,如果其日历字段存在任何不一致,它会抛出异常。例如,GregorianCalendar
始终生成介于1和月份长度之间的DAY_OF_MONTH
值。非宽松的GregorianCalendar
在计算其时间或日历字段值时,如果设置了任何超出范围的字段值,将抛出异常。
第一周
Calendar
使用两个参数定义了一个特定区域的七天周:一周的第一天和第一周的最小天数(从1到7)。这些数字来自区域资源数据或构造Calendar
时的区域本身。如果指定的区域包含"fw"和/或"rg" Unicode扩展,则将根据这些扩展获取一周的第一天。如果同时指定了"fw"和"rg",则来自"fw"扩展的值将取代"rg"扩展的隐含值。它们也可以通过设置它们的值的方法明确指定。
在设置或获取WEEK_OF_MONTH
或WEEK_OF_YEAR
字段时,Calendar
必须确定月份或年份的第一周作为参考点。一个月或一年的第一周被定义为从getFirstDayOfWeek()
开始并包含该月或年至少getMinimalDaysInFirstWeek()
天的最早七天时期。编号为..., -1, 0的周在第一周之前;编号为2, 3,...的周在第一周之后。请注意,get()
返回的标准化编号可能不同。例如,特定的Calendar
子类可能将一年中第一周之前的周指定为上一年的第n
周。
日历字段解析
在从日历字段计算日期和时间时,可能存在计算不足的信息(例如只有年和月而没有日期),或存在不一致的信息(例如1996年7月15日(公历)是星期二,而实际上1996年7月15日是星期一)。Calendar
将解析日历字段值以确定日期和时间的方式。
如果日历字段值存在冲突,Calendar
会优先考虑最近设置的日历字段。 以下是日历字段的默认组合。将使用最近设置的单个字段确定的最近组合。
对于一天中的时间字段:YEAR + MONTH + DAY_OF_MONTH YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK YEAR + DAY_OF_YEAR YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
HOUR_OF_DAY AM_PM + HOUR
如果在所选字段组合中存在任何未设置值的日历字段,Calendar
将使用它们的默认值。每个字段的默认值可能因具体的日历系统而异。例如,在GregorianCalendar
中,字段的默认值与纪元开始时的值相同:即YEAR = 1970
、MONTH = JANUARY
、DAY_OF_MONTH = 1
等。
注意:在解释某些特定时间的情况下可能存在一些歧义,这些歧义通过以下方式解决:
- 23:59是一天中的最后一分钟,00:00是第二天的第一分钟。因此,1999年12月31日23:59 < 2000年1月1日00:00 < 2000年1月1日00:01。
- 尽管在历史上不太精确,午夜也属于"上午",中午属于"下午",因此在同一天中,12:00 am(午夜)< 12:01 am,12:00 pm(中午)< 12:01 pm
日期或时间格式字符串不是日历定义的一部分,因为这些字符串必须在运行时由用户进行修改或覆盖。使用DateFormat
来格式化日期。
字段操作
可以使用三种方法更改日历字段:set()
、add()
和roll()
。
set(f, value)
将日历字段f
更改为value
。此外,它设置一个内部成员变量以指示日历字段f
已更改。尽管日历字段f
立即更改,但直到下一次调用get()
、getTime()
、getTimeInMillis()
、add()
或roll()
时,日历的时间值(毫秒)才会重新计算。因此,多次调用set()
不会触发多次不必要的计算。由于使用set()
更改日历字段,其他日历字段可能会改变,具体取决于日历字段、日历字段值和日历系统。此外,在重新计算日历字段后,get(f)
不一定会返回set
方法调用后的value
。具体情况由具体的日历类确定。
示例:考虑一个最初设置为1999年8月31日的GregorianCalendar
。调用set(Calendar.MONTH, Calendar.SEPTEMBER)
将日期设置为1999年9月31日。这是一个临时的内部表示,如果然后调用getTime()
,它将解析为1999年10月1日。然而,在调用getTime()
之前调用set(Calendar.DAY_OF_MONTH, 30)
将日期设置为1999年9月30日,因为在set()
之后没有重新计算。
add(f, delta)
将delta
添加到字段f
。这相当于调用set(f, get(f) + delta)
并进行两个调整:
添加规则1。调用后字段
f
的值减去调用前字段f
的值为delta
,模除任何字段f
中发生的溢出。当字段值超出其范围时会发生溢出,结果是下一个较大的字段会递增或递减,并且字段值会调整回其范围内。添加规则2。如果预期较小的字段应保持不变,但由于更改字段
f
后其最小值或最大值发生变化或其他约束(例如时区偏移更改)而不可能等于其先前值,则其值将调整为尽可能接近其预期值。较小字段表示较小的时间单位。HOUR
是比DAY_OF_MONTH
更小的字段。对于不希望保持不变的较小字段不进行调整。日历系统确定哪些字段预计是不变的。
此外,与set()
不同,add()
会立即强制重新计算日历的毫秒和所有字段。
示例:考虑一个最初设置为1999年8月31日的GregorianCalendar
。调用add(Calendar.MONTH, 13)
将日历设置为2000年9月30日。 添加规则1将MONTH
字段设置为9月,因为在8月加上13个月会得到下一年的9月。由于在GregorianCalendar
中9月不能有31天,添加规则2将DAY_OF_MONTH
设置为30,最接近的可能值。尽管DAY_OF_WEEK
是一个较小的字段,但在GregorianCalendar
中,当月份更改时,预计DAY_OF_WEEK
会发生变化,因此不会通过规则2进行调整。
roll(f, delta)
将delta
添加到字段f
,而不更改较大的字段。这相当于调用add(f, delta)
并进行以下调整:
滚动规则。调用后较大的字段保持不变。较大的字段表示较大的时间单位。
DAY_OF_MONTH
比HOUR
更大。
示例:参见GregorianCalendar.roll(int, int)
。
使用模型。为了激励add()
和roll()
的行为,考虑一个用户界面组件,其中有用于月份、日期和年份的增加和减少按钮,以及一个底层的GregorianCalendar
。如果界面显示为1999年1月31日,用户按下月份增加按钮,应该显示什么?如果底层实现使用set()
,可能会显示为1999年3月3日。更好的结果应该是1999年2月28日。此外,如果用户再次按下月份增加按钮,应该显示为1999年3月31日,而不是1999年3月28日。通过保存原始日期并根据是否应该影响更大字段来使用add()
或roll()
,用户界面可以表现为大多数用户直觉地期望的方式。
- 自 JDK 版本:
- 1.1
- 参见:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Calendar.Builder
用于根据各种日期时间参数创建Calendar
。 -
Field Summary
Modifier and TypeFieldDescriptionstatic final int
用于getDisplayNames
的样式说明符,指示所有样式中的名称,例如 "January" 和 "Jan"。static final int
AM_PM
字段的值,指示一天中从午夜到中午前的时段。static final int
get
和set
的字段编号,指示HOUR
是上午还是下午。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第四个月。protected boolean
如果fields[]
与当前设置的时间同步,则为 True。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第八个月。static final int
get
和set
的字段编号,指示月份的日期。static final int
get
和set
的字段编号,指示月份的日期。static final int
get
和set
的字段编号,指示星期几。static final int
get
和set
的字段编号,指示当前月份内星期几的序数。static final int
get
和set
的字段编号,指示当前年份内的日期编号。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第十二个月。static final int
get
和set
的字段编号,指示毫秒级的夏令时偏移量。static final int
get
和set
的字段编号,指示纪元,例如儒略历中的 AD 或 BC。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第二个月。static final int
get
和set
识别的不同字段数量。protected int[]
此日历的当前设置时间的日历字段值。static final int
DAY_OF_WEEK
字段的值,指示星期五。static final int
get
和set
的字段编号,指示上午或下午的小时。static final int
get
和set
的字段编号,指示一天中的小时。protected boolean[]
告知日历的指定日历字段是否已设置的标志。protected boolean
如果time
的值有效,则为 True。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第一个月。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第七个月。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第六个月。static final int
static final int
用于getDisplayName
和getDisplayNames
的样式说明符,指示用于格式的长名称。static final int
用于getDisplayName
和getDisplayNames
的样式说明符,指示独立使用的长名称,例如作为日历标题的月份名称。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第三个月。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第五个月。static final int
get
和set
的字段编号,指示秒内的毫秒数。static final int
get
和set
的字段编号,指示小时内的分钟数。static final int
DAY_OF_WEEK
字段的值,指示星期一。static final int
get
和set
的字段编号,指示月份。static final int
用于getDisplayName
和getDisplayNames
的样式说明符,指示用于格式的狭窄名称。static final int
用于getDisplayName
和getDisplayNames
的样式说明符,指示独立使用的狭窄名称。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第十一个月。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第十个月。static final int
AM_PM
字段的值,指示一天中从中午到午夜前的时段。static final int
DAY_OF_WEEK
字段的值,指示星期六。static final int
get
和set
的字段编号,指示分钟内的秒数。static final int
MONTH
字段的值,指示格里高利历和儒略历中的第九个月。static final int
static final int
用于getDisplayName
和getDisplayNames
的样式说明符,指示用于格式的短名称。static final int
用于getDisplayName
和getDisplayNames
的样式说明符,指示独立使用的短名称,例如作为日历标题的月份缩写。static final int
DAY_OF_WEEK
字段的值,指示星期日。static final int
DAY_OF_WEEK
字段的值,指示星期四。protected long
此日历的当前设置时间,表示为格林尼治时间 1970 年 1 月 1 日 0 时 0 分 0 秒后的毫秒数。static final int
DAY_OF_WEEK
字段的值,指示星期二。static final int
MONTH
字段的值,指示一年中的第十三个月。static final int
DAY_OF_WEEK
字段的值,指示星期三。static final int
get
和set
的字段编号,指示当前月份内的周数。static final int
get
和set
的字段编号,指示当前年份内的周数。static final int
get
和set
的字段编号,指示年份。static final int
get
和set
的字段编号,指示与格林尼治时间的原始偏移量(毫秒)。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
add
(int field, int amount) 根据日历的规则,向给定的日历字段添加或减去指定的时间量。boolean
返回此Calendar
是否表示晚于指定Object
表示的时间。boolean
返回此Calendar
是否表示早于指定Object
表示的时间。final void
clear()
设置此Calendar
的所有日历字段值和时间值(相对于 Epoch 的毫秒偏移量)为未定义状态。final void
clear
(int field) 设置此Calendar
的给定日历字段值和时间值(相对于 Epoch 的毫秒偏移量)为未定义状态。clone()
创建并返回此对象的副本。int
比较两个Calendar
对象表示的时间值(相对于 Epoch 的毫秒偏移量)。protected void
complete()
填充日历字段中的任何未设置字段。protected abstract void
protected abstract void
将当前日历字段值在fields[]
中转换为毫秒时间值time
。boolean
将此Calendar
与指定的Object
进行比较。int
get
(int field) 返回给定日历字段的值。int
getActualMaximum
(int field) 返回此Calendar
的时间值给定时的指定日历字段可能具有的最大值。int
getActualMinimum
(int field) 返回此Calendar
的时间值给定时的指定日历字段可能具有的最小值。返回一个包含运行时环境中Calendar
支持的所有日历类型的不可修改的Set
。static Locale[]
返回此类的getInstance
方法可以返回本地化实例的所有区域设置的数组。返回此Calendar
的日历类型。getDisplayName
(int field, int style, Locale locale) 返回给定style
和locale
中的日历field
值的字符串表示形式。getDisplayNames
(int field, int style, Locale locale) 返回一个包含给定style
和locale
中日历field
的所有名称及其相应字段值的Map
。int
获取一周中的第一天是哪一天;例如,在美国是SUNDAY
,在法国是MONDAY
。abstract int
getGreatestMinimum
(int field) 返回此Calendar
实例给定日历字段的最高最小值。static Calendar
使用默认时区和区域设置获取一个日历。static Calendar
getInstance
(Locale aLocale) 使用默认时区和指定区域设置获取一个日历。static Calendar
getInstance
(TimeZone zone) 使用指定时区和默认区域设置获取一个日历。static Calendar
getInstance
(TimeZone zone, Locale aLocale) 使用指定时区和区域设置获取一个日历。abstract int
getLeastMaximum
(int field) 返回此Calendar
实例给定日历字段的最低最大值。abstract int
getMaximum
(int field) 返回此Calendar
实例给定日历字段的最大值。int
获取一年中第一周需要的最少天数;例如,如果第一周被定义为包含一年中第一个月的第一天的周,则此方法返回1。abstract int
getMinimum
(int field) 返回此Calendar
实例给定日历字段的最小值。final Date
getTime()
long
返回此日历的时间值(毫秒)。获取时区。int
返回此Calendar
表示的周年中的周数。int
返回此Calendar
表示的周年。int
hashCode()
返回此日历的哈希码。protected final int
internalGet
(int field) 返回给定日历字段的值。boolean
告知日期/时间解释是否要宽松。final boolean
isSet
(int field) 确定给定日历字段是否已设置值,包括通过get
方法调用触发的内部字段计算设置的情况。boolean
返回此Calendar
是否支持周日期。abstract void
roll
(int field, boolean up) 在不更改较大字段的情况下,添加或减去给定时间字段上的单个时间单位(上/下)。void
roll
(int field, int amount) 在不更改较大字段的情况下,将指定的(有符号)数量添加到指定的日历字段。void
set
(int field, int value) 将给定的日历字段设置为给定值。final void
set
(int year, int month, int date) 设置日历字段YEAR
、MONTH
和DAY_OF_MONTH
的值。final void
set
(int year, int month, int date, int hourOfDay, int minute) 设置日历字段YEAR
、MONTH
、DAY_OF_MONTH
、HOUR_OF_DAY
和MINUTE
的值。final void
set
(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段YEAR
、MONTH
、DAY_OF_MONTH
、HOUR_OF_DAY
、MINUTE
和SECOND
的值。void
setFirstDayOfWeek
(int value) 设置一周中的第一天是哪一天;例如,在美国是SUNDAY
,在法国是MONDAY
。void
setLenient
(boolean lenient) 指定日期/时间解释是否要宽松。void
setMinimalDaysInFirstWeek
(int value) 设置一年中第一周需要的最少天数;例如,如果第一周被定义为包含一年中第一个月的第一天的周,则调用此方法并传入值1。final void
使用给定的Date
设置此日历的时间。void
setTimeInMillis
(long millis) 使用给定的长整型值设置此日历的当前时间。void
setTimeZone
(TimeZone value) 使用给定的时区值设置时区。void
setWeekDate
(int weekYear, int weekOfYear, int dayOfWeek) 使用给定的日期标识符 - 周年、周数和星期几 - 设置此Calendar
的日期。final Instant
将此对象转换为一个Instant
。toString()
返回此日历的字符串表示形式。
-
Field Details
-
ERA
public static final int ERAget
和set
的字段编号,指示纪元,例如,公元或公元前在儒略历中。这是一个特定于日历的值;请参阅子类文档。- 参见:
-
YEAR
public static final int YEARget
和set
的字段编号,指示年份。这是一个特定于日历的值;请参阅子类文档。- 参见:
-
MONTH
public static final int MONTHget
和set
的字段编号,指示月份。这是一个特定于日历的值。儒略历和公历中的第一个月是JANUARY
,为0;最后一个月取决于一年中的月份数。- 参见:
-
WEEK_OF_YEAR
public static final int WEEK_OF_YEARget
和set
的字段编号,指示当前年份内的周数。由getFirstDayOfWeek()
和getMinimalDaysInFirstWeek()
定义的一年中的第一周的值为1。子类为一年中第一周之前的天定义WEEK_OF_YEAR
的值。- 参见:
-
WEEK_OF_MONTH
public static final int WEEK_OF_MONTHget
和set
的字段编号,指示当前月份内的周数。由getFirstDayOfWeek()
和getMinimalDaysInFirstWeek()
定义的一个月中的第一周的值为1。子类为一个月中第一周之前的天定义WEEK_OF_MONTH
的值。- 参见:
-
DATE
public static final int DATEget
和set
的字段编号,指示月份中的日期。这是DAY_OF_MONTH
的同义词。一个月的第一天的值为1。- 参见:
-
DAY_OF_MONTH
public static final int DAY_OF_MONTHget
和set
的字段编号,指示月份中的日期。这是DATE
的同义词。一个月的第一天的值为1。- 参见:
-
DAY_OF_YEAR
public static final int DAY_OF_YEARget
和set
的字段编号,指示当前年份中的日期。一年的第一天的值为1。- 参见:
-
DAY_OF_WEEK
public static final int DAY_OF_WEEKget
和set
的字段编号,指示星期几。如果日历是非宽松的,则此字段取值为SUNDAY
、MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
和SATURDAY
。否则,任何int值都将被接受并规范化为前面提到的值之一。- 参见:
-
DAY_OF_WEEK_IN_MONTH
public static final int DAY_OF_WEEK_IN_MONTHget
和set
的字段编号,指示当前月份内星期几的序数。与DAY_OF_WEEK
字段一起,这唯一指定了一个月内的某一天。与WEEK_OF_MONTH
和WEEK_OF_YEAR
不同,此字段的值不依赖于getFirstDayOfWeek()
或getMinimalDaysInFirstWeek()
。DAY_OF_MONTH 1
到7
始终对应于DAY_OF_WEEK_IN_MONTH 1
;8
到14
对应于DAY_OF_WEEK_IN_MONTH 2
,依此类推。DAY_OF_WEEK_IN_MONTH 0
表示DAY_OF_WEEK_IN_MONTH 1
之前的一周。负值从月份末开始计算,因此一个月的最后一个星期日被指定为DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1
。由于负值是向后计算的,它们通常在月份内与正值对齐方式不同。例如,如果一个月有31天,DAY_OF_WEEK_IN_MONTH -1
将与DAY_OF_WEEK_IN_MONTH 5
重叠,以及4
的结束。- 参见:
-
AM_PM
public static final int AM_PMget
和set
的字段编号,指示HOUR
是上午还是下午。例如,在下午10:04:15.250,AM_PM
是PM
。- 参见:
-
HOUR
public static final int HOURget
和set
的字段编号,指示上午或下午的小时数。HOUR
用于12小时制(0-11)。中午和午夜由0表示,而不是12。例如,在下午10:04:15.250,HOUR
是10。- 参见:
-
HOUR_OF_DAY
public static final int HOUR_OF_DAYget
和set
的字段编号,指示一天中的小时数。HOUR_OF_DAY
用于24小时制。例如,在下午10:04:15.250,HOUR_OF_DAY
是22。- 参见:
-
MINUTE
public static final int MINUTEget
和set
的字段编号,指示小时内的分钟数。例如,在下午10:04:15.250,MINUTE
是4。- 参见:
-
SECOND
public static final int SECONDget
和set
的字段编号,指示分钟内的秒数。例如,在下午10:04:15.250,SECOND
是15。- 参见:
-
MILLISECOND
public static final int MILLISECONDget
和set
的字段编号,指示秒内的毫秒数。例如,在下午10:04:15.250,MILLISECOND
是250。- 参见:
-
ZONE_OFFSET
public static final int ZONE_OFFSETget
和set
的字段编号,指示与GMT的原始偏移量(以毫秒为单位)。如果
TimeZone
实现子类支持历史GMT偏移更改,则此字段反映此Calendar
的时区的正确GMT偏移值。- 参见:
-
DST_OFFSET
public static final int DST_OFFSETget
和set
的字段编号,指示夏令时偏移量(以毫秒为单位)。如果
TimeZone
实现子类支持历史夏令时时间表更改,则此字段反映此Calendar
的时区的正确夏令时偏移值。- 参见:
-
FIELD_COUNT
public static final int FIELD_COUNTget
和set
识别的字段数量。字段编号范围为0..FIELD_COUNT-1
。- 参见:
-
SUNDAY
public static final int SUNDAYDAY_OF_WEEK
字段的值,表示星期日。- 参见:
-
MONDAY
public static final int MONDAYDAY_OF_WEEK
字段的值,表示星期一。- 参见:
-
TUESDAY
public static final int TUESDAYDAY_OF_WEEK
字段的值,表示星期二。- 参见:
-
WEDNESDAY
public static final int WEDNESDAYDAY_OF_WEEK
字段的值,表示星期三。- 参见:
-
THURSDAY
public static final int THURSDAYDAY_OF_WEEK
字段的值,表示星期四。- 参见:
-
FRIDAY
public static final int FRIDAYDAY_OF_WEEK
字段的值,表示星期五。- 参见:
-
SATURDAY
public static final int SATURDAYDAY_OF_WEEK
字段的值,表示星期六。- 参见:
-
JANUARY
public static final int JANUARYMONTH
字段的值,表示公历和儒略历中一年中的第一个月。- 参见:
-
FEBRUARY
public static final int FEBRUARYMONTH
字段的值,表示公历和儒略历中一年中的第二个月。- 参见:
-
MARCH
public static final int MARCHMONTH
字段的值,表示公历和儒略历中一年中的第三个月。- 参见:
-
APRIL
public static final int APRILMONTH
字段的值,表示公历和儒略历中一年中的第四个月。- 参见:
-
MAY
public static final int MAYMONTH
字段的值,表示公历和儒略历中一年中的第五个月。- 参见:
-
JUNE
public static final int JUNEMONTH
字段的值,表示公历和儒略历中一年中的第六个月。- 参见:
-
JULY
public static final int JULYMONTH
字段的值,表示公历和儒略历中一年中的第七个月。- 参见:
-
AUGUST
public static final int AUGUSTMONTH
字段的值,表示公历和儒略历中一年中的第八个月。- 参见:
-
SEPTEMBER
public static final int SEPTEMBERMONTH
字段的值,表示公历和儒略历中一年中的第九个月。- 参见:
-
OCTOBER
public static final int OCTOBERMONTH
字段的值,表示公历和儒略历中一年中的第十个月。- 参见:
-
NOVEMBER
public static final int NOVEMBERValue of theMONTH
field indicating the eleventh month of the year in the Gregorian and Julian calendars.- See Also:
-
DECEMBER
public static final int DECEMBERValue of theMONTH
field indicating the twelfth month of the year in the Gregorian and Julian calendars.- See Also:
-
UNDECIMBER
public static final int UNDECIMBERValue of theMONTH
field indicating the thirteenth month of the year. AlthoughGregorianCalendar
does not use this value, lunar calendars do.- See Also:
-
AM
public static final int AMValue of theAM_PM
field indicating the period of the day from midnight to just before noon.- See Also:
-
PM
public static final int PMValue of theAM_PM
field indicating the period of the day from noon to just before midnight.- See Also:
-
ALL_STYLES
public static final int ALL_STYLESA style specifier forgetDisplayNames
indicating names in all styles, such as "January" and "Jan".- Since:
- 1.6
- See Also:
-
SHORT
public static final int SHORT- Since:
- 1.6
- See Also:
-
LONG
public static final int LONG- Since:
- 1.6
- See Also:
-
NARROW_FORMAT
public static final int NARROW_FORMATA style specifier forgetDisplayName
andgetDisplayNames
indicating a narrow name used for format. Narrow names are typically single character strings, such as "M" for Monday.- Since:
- 1.8
- See Also:
-
NARROW_STANDALONE
public static final int NARROW_STANDALONEA style specifier forgetDisplayName
andgetDisplayNames
indicating a narrow name independently. Narrow names are typically single character strings, such as "M" for Monday.- Since:
- 1.8
- See Also:
-
SHORT_FORMAT
public static final int SHORT_FORMATA style specifier forgetDisplayName
andgetDisplayNames
indicating a short name used for format.- Since:
- 1.8
- See Also:
-
LONG_FORMAT
public static final int LONG_FORMATA style specifier forgetDisplayName
andgetDisplayNames
indicating a long name used for format.- Since:
- 1.8
- See Also:
-
SHORT_STANDALONE
public static final int SHORT_STANDALONEA style specifier forgetDisplayName
andgetDisplayNames
indicating a short name used independently, such as a month abbreviation as calendar headers.- Since:
- 1.8
- See Also:
-
LONG_STANDALONE
public static final int LONG_STANDALONEA style specifier forgetDisplayName
andgetDisplayNames
indicating a long name used independently, such as a month name as calendar headers.- Since:
- 1.8
- See Also:
-
fields
protected int[] fieldsThe calendar field values for the currently set time for this calendar. This is an array ofFIELD_COUNT
integers, with index valuesERA
throughDST_OFFSET
. -
isSet
protected boolean[] isSetThe flags which tell if a specified calendar field for the calendar is set. A new object has no fields set. After the first call to a method which generates the fields, they all remain set after that. This is an array ofFIELD_COUNT
booleans, with index valuesERA
throughDST_OFFSET
. -
time
protected long timeThe currently set time for this calendar, expressed in milliseconds after January 1, 1970, 0:00:00 GMT.- See Also:
-
isTimeSet
protected boolean isTimeSetTrue if then the value oftime
is valid. The time is made invalid by a change to an item offield[]
.- See Also:
-
areFieldsSet
protected boolean areFieldsSetTrue iffields[]
are in sync with the currently set time. If false, then the next attempt to get the value of a field will force a recomputation of all fields from the current value oftime
.
-
-
Constructor Details
-
Calendar
protected Calendar()Constructs a Calendar with the default time zone and the defaultFORMAT
locale.- See Also:
-
Calendar
Constructs a calendar with the specified time zone and locale.- Parameters:
-
zone
- the time zone to use -
aLocale
- the locale for the week data
-
-
Method Details
-
getInstance
Gets a calendar using the default time zone and locale. TheCalendar
returned is based on the current time in the default time zone with the defaultFORMAT
locale.If the locale contains the time zone with "tz" Unicode extension, that time zone is used instead.
- Returns:
- a Calendar.
-
getInstance
Gets a calendar using the specified time zone and default locale. TheCalendar
returned is based on the current time in the given time zone with the defaultFORMAT
locale.- Parameters:
-
zone
- the time zone to use - Returns:
- a Calendar.
- Throws:
-
NullPointerException
- ifzone
isnull
-
getInstance
获取使用默认时区和指定区域设置的日历。返回的Calendar
基于默认时区中的当前时间和给定区域设置。如果区域设置包含带有"tz"的时区Unicode扩展,则使用该时区。
- 参数:
-
aLocale
- 用于周数据的区域设置 - 返回:
- 一个日历。
- 抛出:
-
NullPointerException
- 如果aLocale
为null
-
getInstance
获取具有指定时区和区域设置的日历。返回的Calendar
基于给定时区中的当前时间和给定区域设置。- 参数:
-
zone
- 要使用的时区 -
aLocale
- 用于周数据的区域设置 - 返回:
- 一个日历。
- 抛出:
-
NullPointerException
- 如果zone
或aLocale
为null
-
getAvailableLocales
- 返回:
-
可用于本地化
Calendar
实例的区域设置数组。
-
computeTime
protected abstract void computeTime()将fields[]
中的当前日历字段值转换为毫秒时间值time
。- 参见:
-
computeFields
protected abstract void computeFields()- 参见:
-
getTime
- 返回:
-
代表时间值的
Date
。 - 参见:
-
setTime
使用给定的Date
设置此日历的时间。注意:使用
Date(Long.MAX_VALUE)
或Date(Long.MIN_VALUE)
调用setTime()
可能会导致get()
返回不正确的字段值。- 参数:
-
date
- 给定的日期。 - 抛出:
-
NullPointerException
- 如果date
为null
- 参见:
-
getTimeInMillis
public long getTimeInMillis()以毫秒为单位返回此日历的时间值。- 返回:
- 从纪元开始的当前时间的UTC毫秒数。
- 参见:
-
setTimeInMillis
public void setTimeInMillis(long millis) 从给定的长整型值设置此日历的当前时间。- 参数:
-
millis
- 从纪元开始的UTC毫秒数的新时间。 - 参见:
-
get
public int get(int field) 返回给定日历字段的值。在宽松模式下,所有日历字段都会被规范化。在非宽松模式下,所有日历字段都会被验证,如果任何日历字段具有超出范围的值,则此方法会抛出异常。规范化和验证由complete()
方法处理,该过程依赖于日历系统。- 参数:
-
field
- 给定的日历字段。 - 返回:
- 给定日历字段的值。
- 抛出:
-
IllegalArgumentException
- 如果此Calendar
为非宽松模式且任何日历字段具有无效值。 - 参见:
-
internalGet
protected final int internalGet(int field) 返回给定日历字段的值。此方法不涉及字段值的规范化或验证。- 参数:
-
field
- 给定的日历字段。 - 返回:
- 给定日历字段的值。
- 参见:
-
set
public void set(int field, int value) 将给定的日历字段设置为给定值。无论宽松模式如何,此方法都不会解释值。- 参数:
-
field
- 给定的日历字段。 -
value
- 要为给定日历字段设置的值。 - 参见:
-
set
public final void set(int year, int month, int date) - 参数:
-
year
- 用于设置YEAR
日历字段的值。 -
month
- 用于设置MONTH
日历字段的值。月份值是基于0的。例如,1代表一月。 -
date
- 用于设置DAY_OF_MONTH
日历字段的值。 - 参见:
-
set
public final void set(int year, int month, int date, int hourOfDay, int minute) - 参数:
-
year
- 用于设置YEAR
日历字段的值。 -
month
- 用于设置MONTH
日历字段的值。月份值是基于0的。例如,1代表一月。 -
date
- 用于设置DAY_OF_MONTH
日历字段的值。 -
hourOfDay
- 用于设置HOUR_OF_DAY
日历字段的值。 -
minute
- 用于设置MINUTE
日历字段的值。 - 参见:
-
set
public final void set(int year, int month, int date, int hourOfDay, int minute, int second) - 参数:
-
year
- 用于设置YEAR
日历字段的值。 -
month
- 用于设置MONTH
日历字段的值。月份值是基于0的。例如,1代表一月。 -
date
- 用于设置DAY_OF_MONTH
日历字段的值。 -
hourOfDay
- 用于设置HOUR_OF_DAY
日历字段的值。 -
minute
- 用于设置MINUTE
日历字段的值。 -
second
- 用于设置SECOND
日历字段的值。 - 参见:
-
clear
public final void clear()设置所有日历字段值和此Calendar
的时间值(相对于Epoch的毫秒偏移量)为未定义。这意味着对所有日历字段,isSet()
将返回false
,日期和时间计算将处理字段,就好像它们从未被设置过一样。一个Calendar
实现类可以使用其特定的默认字段值进行日期/时间计算。例如,如果YEAR
字段值未定义,则GregorianCalendar
使用1970年。- 参见:
-
clear
public final void clear(int field) 设置给定的日历字段值和此Calendar
的时间值(距离Epoch的毫秒偏移量)未定义。这意味着isSet(field)
将返回false
,日期和时间计算将把该字段视为从未设置过。Calendar
实现类可以使用字段的特定默认值进行日期和时间计算。HOUR_OF_DAY
,HOUR
和AM_PM
字段是独立处理的,并且应用一天中时间的分辨率规则。清除其中一个字段不会重置此Calendar
的小时值。使用set(Calendar.HOUR_OF_DAY, 0)
来重置小时值。- 参数:
-
field
- 要清除的日历字段。 - 参见:
-
isSet
public final boolean isSet(int field) 确定给定的日历字段是否已设置值,包括通过get
方法调用触发的内部字段计算设置的情况。- 参数:
-
field
- 要测试的日历字段 - 返回:
-
如果给定的日历字段已设置值,则返回
true
;否则返回false
。
-
getDisplayName
返回给定style
和locale
中日历field
值的字符串表示。如果不适用字符串表示,则返回null
。如果字符串表示适用于给定的日历field
,则此方法调用get(field)
来获取日历field
值。例如,如果此
Calendar
是GregorianCalendar
,其日期为2005-01-01,则在英语区域设置中,MONTH
字段的字符串表示将是长样式下的"January"或短样式下的"Jan"。然而,DAY_OF_MONTH
字段不会有字符串表示可用,此方法将返回null
。默认实现支持具有给定
locale
中名称的日历字段的DateFormatSymbols
。如果
Calendar
field
没有字符串表示,并且日历处于非宽松模式且任何日历字段具有无效值,则返回null
。如果Calendar
field
有字符串表示,并且日历处于非宽松模式且任何日历字段具有无效值,则将抛出IllegalArgumentException
。- 参数:
-
field
- 要返回字符串表示的日历字段 -
style
- 应用于字符串表示的样式之一;SHORT_FORMAT
(SHORT
)、SHORT_STANDALONE
、LONG_FORMAT
(LONG
)、LONG_STANDALONE
、NARROW_FORMAT
或NARROW_STANDALONE
之一。 -
locale
- 字符串表示的区域设置(由locale
指定的任何日历类型将被忽略) - 返回:
-
给定
style
中field
的字符串表示,如果不适用字符串表示则返回null
。 - 抛出:
-
IllegalArgumentException
- 如果field
或style
无效,或者此Calendar
为非宽松模式且任何日历字段具有无效值 -
NullPointerException
- 如果locale
为null - 自:
- 1.6
-
getDisplayNames
返回一个包含给定style
和locale
中所有日历field
名称及其相应字段值的Map
。例如,如果此Calendar
是一个GregorianCalendar
,返回的映射将包含英语区域设置中短样式下的"Jan"到JANUARY
,"Feb"到FEBRUARY
等。由于使用单个字符,狭窄名称可能不是唯一的,例如"Sunday"和"Saturday"都用"S"表示。在这种情况下,狭窄名称不包括在返回的
Map
中。其他日历字段的值可能会考虑以确定一组显示名称。例如,如果此
Calendar
是一个阴阳历系统,并且由YEAR
字段给出的年份值有一个闰月,此方法将返回包含闰月名称的月份名称,并且月份名称将映射到特定于该年份的值。默认实现支持包含在
DateFormatSymbols
中的显示名称。例如,如果field
是MONTH
,style
是ALL_STYLES
,此方法返回一个Map
,其中包含DateFormatSymbols.getShortMonths()
和DateFormatSymbols.getMonths()
返回的所有字符串。与
getDisplayName(int, int, Locale)
不同,如果Calendar
为非宽松模式且任何日历字段具有无效值,则此方法不会抛出IllegalArgumentException
。相反,此方法将返回null
或一个Map
。- 参数:
-
field
- 要返回显示名称的日历字段 -
style
- 应用于字符串表示的样式之一;SHORT_FORMAT
(SHORT
)、SHORT_STANDALONE
、LONG_FORMAT
(LONG
)、LONG_STANDALONE
、NARROW_FORMAT
或NARROW_STANDALONE
之一 -
locale
- 显示名称的区域设置 - 返回:
-
包含所有
style
和locale
中显示名称及其字段值的Map
,如果field
没有定义显示名称,则返回null
- 抛出:
-
IllegalArgumentException
- 如果field
或style
无效 -
NullPointerException
- 如果locale
为null - 自:
- 1.6
-
complete
protected void complete()填充日历字段中的任何未设置字段。首先,如果时间值(距离Epoch的毫秒偏移量)尚未从日历字段值计算出来,则调用computeTime()
方法。然后,调用computeFields()
方法来计算所有日历字段值。 -
getAvailableCalendarTypes
返回一个包含运行时环境中Calendar
支持的所有日历类型的不可修改的Set
。可用的日历类型可用于Unicode区域设置扩展。返回的Set
至少包含"gregory"
。日历类型不包括别名,例如"gregorian"
代表"gregory"
。- 返回:
-
包含所有可用日历类型的不可修改
Set
- 自:
- 1.8
- 参见:
-
getCalendarType
返回此Calendar
的日历类型。日历类型由Unicode区域设置数据标记语言(LDML)规范定义。此方法的默认实现返回此
Calendar
实例的类名。任何实现LDML定义的日历系统的子类应该重写此方法以返回适当的日历类型。- 返回:
-
LDML定义的日历类型或此
Calendar
实例的类名 - 自:
- 1.8
- 参见:
-
equals
将此Calendar
与指定的Object
进行比较。仅当参数是表示相同时间值(距离Epoch的毫秒偏移量)的相同日历系统的Calendar
对象,并且在相同Calendar
参数下时,结果为true
。Calendar
参数是由isLenient
,getFirstDayOfWeek
,getMinimalDaysInFirstWeek
和getTimeZone
方法表示的值。如果两个Calendar
之间的这些参数有任何差异,则此方法返回false
。使用
compareTo
方法仅比较时间值。 -
hashCode
public int hashCode()返回此日历的哈希码。 -
before
返回此Calendar
是否表示早于指定Object
所表示时间的时间。此方法等效于:
当且仅当compareTo(when) < 0
when
是Calendar
实例时。否则,该方法返回false
。- 参数:
-
when
- 要比较的Object
- 返回:
-
如果此
Calendar
的时间早于when
所表示的时间,则返回true
; 否则返回false
。 - 参见:
-
after
返回此Calendar
是否表示晚于指定Object
所表示时间的时间。此方法等效于:
当且仅当compareTo(when) > 0
when
是Calendar
实例时。否则,该方法返回false
。- 参数:
-
when
- 要比较的Object
- 返回:
-
如果此
Calendar
的时间晚于when
所表示的时间,则返回true
; 否则返回false
。 - 参见:
-
compareTo
比较两个Calendar
对象表示的时间值(从Epoch
的毫秒偏移量)。- 指定者:
-
compareTo
在接口Comparable<Calendar>
中 - 参数:
-
anotherCalendar
- 要比较的Calendar
。 - 返回:
-
如果参数表示的时间等于此
Calendar
表示的时间,则返回值0
; 如果此Calendar
的时间早于参数表示的时间,则返回小于0
的值; 如果此Calendar
的时间晚于参数表示的时间,则返回大于0
的值。 - 抛出:
-
NullPointerException
- 如果指定的Calendar
为null
。 -
IllegalArgumentException
- 如果由于任何无效的日历值而无法获取指定Calendar
对象的时间值。 - 自:
- 1.5
-
add
public abstract void add(int field, int amount) 向给定的日历字段添加或减去指定的时间量,基于日历的规则。例如,要从当前日历时间减去5天,可以通过调用以下方式实现:add(Calendar.DAY_OF_MONTH, -5)
。- 参数:
-
field
- 日历字段。 -
amount
- 要添加到字段的日期或时间量。 - 抛出:
-
IllegalArgumentException
- 如果此Calendar
是非宽松的,并且任何日历字段具有无效值,或者如果field
是ZONE_OFFSET
、DST_OFFSET
或未知。 - 参见:
-
roll
public abstract void roll(int field, boolean up) 在不更改较大字段的情况下,向给定的时间字段添加或减去(上/下)一个时间单元。例如,要将当前日期向前滚动一天,可以通过调用以下方式实现:roll(Calendar.DATE, true)。在年或Calendar.YEAR字段上滚动时,将在调用
getMaximum(Calendar.YEAR)
返回的值之间滚动年值。在月或Calendar.MONTH字段上滚动时,其他字段(如日期)可能会发生冲突,需要更改。例如,在日期为01/31/96上滚动月份将导致02/29/96。在小时或Calendar.HOUR_OF_DAY字段上滚动时,将在0到23之间滚动小时值,从零开始计数。- 参数:
-
field
- 时间字段。 -
up
- 指示是否向上滚动指定时间字段的值。如果向上滚动,则使用true,否则使用false。 - 抛出:
-
IllegalArgumentException
- 如果此Calendar
是非宽松的,并且任何日历字段具有无效值,或者如果field
是ZONE_OFFSET
、DST_OFFSET
或未知。 - 参见:
-
roll
public void roll(int field, int amount) 向指定的日历字段添加(有符号的)指定数量的时间,而不更改较大字段。负数意味着向下滚动。注意:此
Calendar
上的默认实现只是重复调用按一个单位滚动的roll()
版本。这可能并不总是正确的。例如,如果DAY_OF_MONTH
字段为31,则通过二月滚动将使其设置为28。这个问题由GregorianCalendar
版本的此函数处理。其他子类还应提供此函数的覆盖,以执行正确的操作。- 参数:
-
field
- 日历字段。 -
amount
- 要添加到日历field
的有符号数量。 - 抛出:
-
IllegalArgumentException
- 如果此Calendar
是非宽松的,并且任何日历字段具有无效值,或者如果field
是ZONE_OFFSET
、DST_OFFSET
或未知。 - 自:
- 1.2
- 参见:
-
setTimeZone
使用给定的时区值设置时区。- 参数:
-
value
- 给定的时区。
-
getTimeZone
获取时区。- 返回:
- 与此日历关联的时区对象。
-
setLenient
public void setLenient(boolean lenient) 指定日期/时间解释是否宽松。使用宽松解释,例如,日期"1996年2月942日"将被视为等同于1996年2月1日之后的第941天。使用严格(非宽松)解释,这样的日期将导致抛出异常。默认为宽松。- 参数:
-
lenient
- 如果要打开宽松模式,则为true
; 如果要关闭宽松模式,则为false
。 - 参见:
-
isLenient
public boolean isLenient()告知日期/时间解释是否宽松。- 返回:
-
如果此日历的解释模式为宽松,则返回
true
; 否则返回false
。 - 参见:
-
setFirstDayOfWeek
public void setFirstDayOfWeek(int value) 设置一周的第一天是什么;例如,在美国是星期日
,在法国是星期一
。- 参数:
-
value
- 给定的一周的第一天。 - 参见:
-
getFirstDayOfWeek
public int getFirstDayOfWeek()获取一周的第一天是什么;例如,在美国是星期日
,在法国是星期一
。- 返回:
- 一周的第一天。
- 参见:
-
setMinimalDaysInFirstWeek
public void setMinimalDaysInFirstWeek(int value) 设置一年中第一周所需的最少天数;例如,如果第一周被定义为包含一年中第一个月的第一天的周,调用此方法并使用值1。如果必须是完整的一周,则使用值7。- 参数:
-
value
- 给定的一年中第一周所需的最小天数。 - 参见:
-
getMinimalDaysInFirstWeek
public int getMinimalDaysInFirstWeek()获取一年中第一周所需的最小天数;例如,如果第一周被定义为包含一年中第一个月的第一天的周,则此方法返回1。如果所需的最小天数必须是整整一周,则此方法返回7。- 返回:
- 一年中第一周所需的最小天数。
- 参见:
-
isWeekDateSupported
public boolean isWeekDateSupported()返回此Calendar
是否支持周日期。此方法的默认实现返回
false
。- 返回:
-
如果此
Calendar
支持周日期,则返回true
;否则返回false
。 - 自版本:
- 1.7
- 参见:
-
getWeekYear
public int getWeekYear()- 返回:
-
此
Calendar
的周年 - 抛出:
-
UnsupportedOperationException
- 如果此Calendar
不支持任何周年编号。 - 自版本:
- 1.7
- 参见:
-
setWeekDate
public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) 使用给定的日期标识符(周年、周数和星期几)设置此Calendar
的日期。与
set
方法不同,所有日历字段和time
值都会在返回时计算。如果
weekOfYear
超出了weekYear
中有效的周数范围,则在宽松模式下会调整weekYear
和weekOfYear
的值,或者在非宽松模式下会抛出IllegalArgumentException
。此方法的默认实现会抛出一个
UnsupportedOperationException
。- 参数:
-
weekYear
- 周年 -
weekOfYear
- 基于weekYear
的周数 -
dayOfWeek
- 星期几的值:常量之一,DAY_OF_WEEK
字段的常量:SUNDAY
,...,SATURDAY
。 - 抛出:
-
IllegalArgumentException
- 如果给定的日期标识符中有任何无效项,或者任何日历字段与给定的日期标识符不一致且在非宽松模式下 -
UnsupportedOperationException
- 如果此Calendar
不支持任何周年编号。 - 自版本:
- 1.7
- 参见:
-
getWeeksInWeekYear
public int getWeeksInWeekYear()返回此Calendar
表示的周年中的周数。此方法的默认实现会抛出一个
UnsupportedOperationException
。- 返回:
- 周年中的周数。
- 抛出:
-
UnsupportedOperationException
- 如果此Calendar
不支持任何周年编号。 - 自版本:
- 1.7
- 参见:
-
getMinimum
public abstract int getMinimum(int field) 返回此Calendar
实例的指定日历字段的最小值。最小值定义为对于任何可能的时间值,get
方法返回的最小值。最小值取决于实例的特定日历系统参数。- 参数:
-
field
- 日历字段。 - 返回:
- 给定日历字段的最小值。
- 参见:
-
getMaximum
public abstract int getMaximum(int field) 返回此Calendar
实例的指定日历字段的最大值。最大值定义为对于任何可能的时间值,get
方法返回的最大值。最大值取决于实例的特定日历系统参数。- 参数:
-
field
- 日历字段。 - 返回:
- 给定日历字段的最大值。
- 参见:
-
getGreatestMinimum
public abstract int getGreatestMinimum(int field) 返回此Calendar
实例的指定日历字段的最高最小值。最高最小值定义为对于任何可能的时间值,getActualMinimum(int)
返回的最大值。最大最小值取决于实例的特定日历系统参数。- 参数:
-
field
- 日历字段。 - 返回:
- 给定日历字段的最高最小值。
- 参见:
-
getLeastMaximum
public abstract int getLeastMaximum(int field) 返回此Calendar
实例的指定日历字段的最低最大值。最低最大值定义为对于任何可能的时间值,getActualMaximum(int)
返回的最小值。最小最大值取决于实例的特定日历系统参数。例如,对于公历系统的Calendar
,DAY_OF_MONTH
字段返回28,因为28是该日历中最短月份,即普通年份的二月份的最后一天。- 参数:
-
field
- 日历字段。 - 返回:
- 给定日历字段的最低最大值。
- 参见:
-
getActualMinimum
public int getActualMinimum(int field) 返回此Calendar
的指定日历字段在给定时间值下可能具有的最小值。此方法的默认实现使用迭代算法来确定日历字段的实际最小值。子类应尽可能用更高效的实现覆盖此方法 - 在许多情况下,它们可以简单地返回
getMinimum()
。- 参数:
-
field
- 日历字段 - 返回:
-
此
Calendar
的时间值下给定日历字段的最小值 - 自版本:
- 1.2
- 参见:
-
getActualMaximum
public int getActualMaximum(int field) 返回此Calendar
的指定日历字段在给定时间值下可能具有的最大值。例如,在希伯来日历系统中,MONTH
字段的实际最大值在某些年份为12,在其他年份为13。此方法的默认实现使用迭代算法来确定日历字段的实际最大值。子类应尽可能用更高效的实现覆盖此方法。
- 参数:
-
field
- 日历字段 - 返回值:
-
此
Calendar
的时间值的给定日历字段的最大值 - 自版本:
- 1.2
- 参见:
-
clone
创建并返回此对象的副本。 -
toString
返回此日历的字符串表示。此方法仅用于调试目的,返回的字符串格式可能因实现而异。返回的字符串可能为空,但不能为null
。 -
toInstant
将此对象转换为一个Instant
。转换创建一个表示与此
Calendar
相同时间线上的Instant
。- 返回值:
- 表示相同时间线上相同点的即时
- 自版本:
- 1.8
-