java.util
类 Calendar
java.lang.Object
java.util.Calendar
- 所有已实现的接口:
- Serializable, Cloneable, Comparable< Calendar>
- 直接已知子类:
- GregorianCalendar
public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable< Calendar>
Calendar
类是一个抽象类,它为特定瞬间与一组诸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected
。
与其他语言环境敏感类一样,Calendar
提供了一个类方法 getInstance
,以获得此类型的一个通用的对象。Calendar
的 getInstance
方法返回一个Calendar
对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
Calendar
对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值,例如,日语-格里高里历,日语-传统日历。Calendar
定义了某些日历字段返回值的范围,以及这些值的含义。例如,对于所有日历,日历系统第一个月的值是 MONTH == JANUARY
。其他值是由具体子类(例如 ERA
)定义的。有关此内容的细节,请参阅每个字段的文档和子类文档。
获得并设置日历字段值
可以通过调用 set
方法来设置日历字段值。在需要计算时间值(距历元所经过的毫秒)或日历字段值之前,不会解释 Calendar
中的所有字段值设置。调用 get
、getTimeInMillis
、getTime
、add
和 roll
涉及此类计算。
宽松性
Calendar
有两种解释日历字段的模式,即 lenient 和 non-lenient。当 Calendar
处于 lenient 模式时,它可接受比它所生成的日历字段范围更大范围内的值。当 Calendar
重新计算日历字段值,以便由 get()
返回这些值时,所有日历字段都被标准化。例如,lenient 模式下的GregorianCalendar
将 MONTH == JANUARY
、DAY_OF_MONTH == 32
解释为 February 1。
当 Calendar
处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。例如,GregorianCalendar
总是在 1 与月份的长度之间生成 DAY_OF_MONTH
值。如果已经设置了任何超出范围的字段值,那么在计算时间或日历字段值时,处于 non-lenient 模式下的GregorianCalendar
会抛出一个异常。
第一个星期
Calendar
使用两个参数定义了特定于语言环境的 7 天制星期:星期的第一天和第一个星期中的最小一天(从 1 到 7)。这些数字取自构造Calendar
时的语言环境资源数据。还可以通过为其设置值的方法来显式地指定它们。
在设置或获得 WEEK_OF_MONTH
或 WEEK_OF_YEAR
字段时,Calendar
必须确定一个月或一年的第一个星期,以此作为参考点。一个月或一年的第一个星期被确定为开始于 getFirstDayOfWeek()
的最早七天,它最少包含那一个月或一年的 getMinimalDaysInFirstWeek()
天数。第一个星期之前的各星期编号为 ...、-1、0;之后的星期编号为 2、3、...。注意,get()
返回的标准化编号方式可能有所不同。例如,特定 Calendar
子类可能将某一年第 1 个星期之前的那个星期指定为前一年的第 n
个星期。
日历字段解析
在计算日历字段中的日期和时间时,可能没有足够的信息用于计算(例如只有年和月,但没有日),或者可能有不一致的信息( 例如 "Tuesday, July 15, 1996"(格林威治时间)——实际上,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。
- 尽管从历史上看不够精确,但午夜也属于 "am",,中午属于 "pm",所以在同一天,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
集合。具体细节是通过具体的日历类确定的。
示例:假定 GregorianCalendar
最初被设置为 1999 年 8 月 31 日。调用 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)
,但要带以下两个调整:
Add 规则 1。调用后
f
字段的值减去调用前f
字段的值等于delta
,以字段f
中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,并将字段值调整回其范围内。Add 规则 2。如果期望某一个更小的字段是不变的,但让它等于以前的值是不可能的,因为在字段
f
发生更改之后,或者在出现其他约束之后,比如时区偏移量发生更改,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。更小的字段表示一个更小的时间单元。HOUR
是一个比DAY_OF_MONTH
小的字段。对于不期望是不变字段的更小字段,无需进行任何调整。日历系统会确定期望不变的那些字段。
此外,与 set()
不同,add()
强迫日历系统立即重新计算日历的毫秒数和所有字段。
示例:假定 GregorianCalendar
最初被设置为 1999 年 8 月 31 日。调用 add(Calendar.MONTH, 13)
将日历设置为 2000 年 9 月 30 日。Add 规则 1 将 MONTH
字段设置为 September,因为向 August 添加 13 个月得出的就是下一年的 September。因为在 GregorianCalendar
中,DAY_OF_MONTH
不可能是 9 月 31 日,所以 add 规则 2 将 DAY_OF_MONTH
设置为 30,即最可能的值。尽管它是一个更小的字段,但不能根据规则 2 调整DAY_OF_WEEK
,因为在 GregorianCalendar
中的月份发生变化时,该值也需要发生变化。
roll(f, delta)
将 delta
添加到 f
字段中,但不更改更大的字段。这等同于调用 add(f, delta)
,但要带以下调整:
Roll 规则。在完成调用后,更大的字段无变化。更大的字段表示一个更大的时间单元。
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()
,根据是否会影响更大的字段,用户界面可以像大多数用户所期望的那样运行。
- 从以下版本开始:
- JDK1.1
- 另请参见:
System.currentTimeMillis()
,Date
,GregorianCalendar
,TimeZone
,DateFormat
, 序列化表格
字段摘要 | |
---|---|
static int |
ALL_STYLES 指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。 |
static int |
AM 指示从午夜到中午之前这段时间的 AM_PM 字段值。 |
static int |
AM_PM get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。 |
static int |
APRIL 指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 |
protected boolean |
areFieldsSet 如果 fields[] 与当前的设置时间同步,则返回 true。 |
static int |
AUGUST 指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。 |
static int |
DATE get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。 |
static int |
DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。 |
static int |
DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。 |
static int |
DECEMBER 指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 |
static int |
DST_OFFSET get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 |
static int |
ERA 指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。 |
static int |
FEBRUARY 指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。 |
static int |
FIELD_COUNT get 和 set 可识别的不同字段的数量。 |
protected int[] |
fields 此日历当前设置时间的日历字段值。 |
static int |
FRIDAY 指示 Friday 的 DAY_OF_WEEK 字段值。 |
static int |
HOUR get 和 set 的字段数字,指示上午或下午的小时。 |
static int |
HOUR_OF_DAY get 和 set 的字段数字,指示一天中的小时。 |
protected boolean[] |
isSet 通知是否设置了该日历某一指定日历字段的标志。 |
protected boolean |
isTimeSet 如果 time 值是一个有效值,则返回 true。 |
static int |
JANUARY 指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。 |
static int |
JULY 指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。 |
static int |
JUNE 指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。 |
static int |
LONG 指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。 |
static int |
MARCH 指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。 |
static int |
MAY 指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。 |
static int |
MILLISECOND get 和 set 的字段数字,指示一秒中的毫秒。 |
static int |
MINUTE get 和 set 的字段数字,指示一小时中的分钟。 |
static int |
MONDAY 指示 Monday 的 DAY_OF_WEEK 字段值。 |
static int |
MONTH 指示月份的 get 和 set 的字段数字。 |
static int |
NOVEMBER 指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。 |
static int |
OCTOBER 指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。 |
static int |
PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。 |
static int |
SATURDAY 指示 Saturday 的 DAY_OF_WEEK 字段值。 |
static int |
SECOND get 和 set 的字段数字,指示一分钟中的秒。 |
static int |
SEPTEMBER 指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。 |
static int |
SHORT 指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "Jan"。 |
static int |
SUNDAY 指示 Sunday 的 DAY_OF_WEEK 字段值。 |
static int |
THURSDAY 指示 Thursday 的 DAY_OF_WEEK 字段值。 |
protected long |
time 日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。 |
static int |
TUESDAY 指示 Tuesday 的 DAY_OF_WEEK 字段值。 |
static int |
UNDECIMBER 指示一年中第十三个月的 MONTH 字段值。 |
static int |
WEDNESDAY 指示 Wednesday 的 DAY_OF_WEEK 字段值。 |
static int |
WEEK_OF_MONTH get 和 set 的字段数字,指示当前月中的星期数。 |
static int |
WEEK_OF_YEAR get 和 set 的字段数字,指示当前年中的星期数。 |
static int |
YEAR 指示年的 get 和 set 的字段数字。 |
static int |
ZONE_OFFSET get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。 |
构造方法摘要 | |
---|---|
protected |
Calendar() 构造一个带有默认时区和语言环境的 Calendar。 |
protected |
Calendar(TimeZone zone, Locale aLocale) 构造一个带有指定时区和语言环境的 Calendar。 |
方法摘要 | |
---|---|
abstract void |
add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 |
boolean |
after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。 |
boolean |
before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。 |
void |
clear() 将此 Calendar 的所日历字段值和时间值(从历元至现在的毫秒偏移量)设置成未定义。 |
void |
clear(int field) 将此 Calendar 的给定日历字段值和时间值(从历元至现在的毫秒偏移量)设置成未定义。 |
Object |
clone() 创建并返回此对象的一个副本。 |
int |
compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从历元至现在的毫秒偏移量)。 |
protected void |
complete() 填充日历字段中所有未设置的字段。 |
protected abstract void |
computeFields() 将当前毫秒时间值 time 转换为 fields[] 中的日历字段值。 |
protected abstract void |
computeTime() 将 fields[] 中的当前日历字段值转换为毫秒时间值 time 。 |
boolean |
equals(Object obj) 将此 Calendar 与指定 Object 比较。 |
int |
get(int field) 返回给定日历字段的值。 |
int |
getActualMaximum(int field) 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。 |
int |
getActualMinimum(int field) 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最小值。 |
static Locale[] |
getAvailableLocales() 返回所有语言环境的数组,此类的 getInstance 方法可以为其返回本地化的实例。 |
String |
getDisplayName(int field, int style, Locale locale) 返回给定 style 和 locale 下的日历 field 值的字符串表示形式。 |
Map<String,Integer> |
getDisplayNames(int field, int style, Locale locale) 返回给定 style 和 locale 下包含日历 field 所有名称的 Map 及其相应字段值。 |
int |
getFirstDayOfWeek() 获取一星期的第一天;例如,在美国,这一天是 SUNDAY ,而在法国,这一天是 MONDAY 。 |
abstract int |
getGreatestMinimum(int field) 返回此 Calendar 实例给定日历字段的最高的最小值。 |
static Calendar |
getInstance() 使用默认时区和语言环境获得一个日历。 |
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 |
getMinimalDaysInFirstWeek() 获取一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则此方法将返回 1。 |
abstract int |
getMinimum(int field) 返回此 Calendar 实例给定日历字段的最小值。 |
Date |
getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 |
long |
getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。 |
TimeZone |
getTimeZone() 获得时区。 |
int |
hashCode() 返回该此日历的哈希码。 |
protected int |
internalGet(int field) 返回给定日历字段的值。 |
boolean |
isLenient() 判断日期/时间的解释是否为宽松的。 |
boolean |
isSet(int field) 确定给定日历字段是否已经设置了一个值,其中包括因为调用 get 方法触发内部字段计算而导致已经设置该值的情况。 |
abstract void |
roll(int field, boolean up) 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。 |
void |
roll(int field, int amount) 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。 |
void |
set(int field, int value) 将给定的日历字段设置为给定值。 |
void |
set(int year, int month, int date) 设置日历字段 YEAR 、MONTH 和 DAY_OF_MONTH 的值。 |
void |
set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR_OF_DAY 和 MINUTE 的值。 |
void |
set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR 、MINUTE 和 SECOND 的值。 |
void |
setFirstDayOfWeek(int value) 设置一星期的第一天是哪一天;例如,在美国,这一天是 SUNDAY ,而在法国,这一天是 MONDAY 。 |
void |
setLenient(boolean lenient) 指定日期/时间解释是否是宽松的。 |
void |
setMinimalDaysInFirstWeek(int value) 设置一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则使用值 1 调用此方法。 |
void |
setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。 |
void |
setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值。 |
void |
setTimeZone(TimeZone value) 使用给定的时区值来设置时区。 |
String |
toString() 返回此日历的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
ERA
public static final int ERA
- 指示年代的
get
和set
的字段数字,比如罗马儒略历中的 AD 或 BC。这是一个特定于日历的值;请参阅子类文档。
YEAR
public static final int YEAR
- 指示年的
get
和set
的字段数字。这是一个特定于日历的值;请参阅子类文档。- 另请参见:
- 常量字段值
MONTH
public static final int MONTH
- 指示月份的
get
和set
的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是JANUARY
,它为 0;最后一个月取决于一年中的月份数。
WEEK_OF_YEAR
public static final int WEEK_OF_YEAR
get
和set
的字段数字,指示当前年中的星期数。正如getFirstDayOfWeek()
和getMinimalDaysInFirstWeek()
所定义的那样,一年中第一个星期的值为 1。子类定义一年第一个星期之前的天数,即WEEK_OF_YEAR
的值。
WEEK_OF_MONTH
public static final int WEEK_OF_MONTH
get
和set
的字段数字,指示当前月中的星期数。正如getFirstDayOfWeek()
和getMinimalDaysInFirstWeek()
所定义的那样,一个月中第一个星期的值为 1。子类定义一个月第一个星期之前的天数,即WEEK_OF_MONTH
的值。
DATE
public static final int DATE
get
和set
的字段数字,指示一个月中的某天。它与DAY_OF_MONTH
是同义词。一个月中第一天的值为 1。- 另请参见:
DAY_OF_MONTH
, 常量字段值
DAY_OF_MONTH
public static final int DAY_OF_MONTH
DAY_OF_YEAR
public static final int DAY_OF_YEAR
get
和set
的字段数字,指示当前年中的天数。一年中第一天的值为 1。- 另请参见:
- 常量字段值
DAY_OF_WEEK
public static final int DAY_OF_WEEK
get
和set
的字段数字,指示一个星期中的某天。该字段可取的值为SUNDAY
、MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
和SATURDAY
。
DAY_OF_WEEK_IN_MONTH
public static final int DAY_OF_WEEK_IN_MONTH
get
和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
和DAY_OF_WEEK_IN_MONTH 4
的末尾相重叠。- 另请参见:
DAY_OF_WEEK
,WEEK_OF_MONTH
, 常量字段值
AM_PM
public static final int AM_PM
get
和set
的字段数字,指示HOUR
是在中午之前还是在中午之后。例如,在 10:04:15.250 PM 这一时刻,AM_PM
为PM
。
HOUR
public static final int HOUR
get
和set
的字段数字,指示上午或下午的小时。HOUR
用于 12 小时制时钟 (0 - 11)。中午和午夜用 0 表示,不用 12 表示。例如,在 10:04:15.250 PM 这一时刻,HOUR
为 10。- 另请参见:
AM_PM
,HOUR_OF_DAY
, 常量字段值
HOUR_OF_DAY
public static final int HOUR_OF_DAY
get
和set
的字段数字,指示一天中的小时。HOUR_OF_DAY
用于 24 小时制时钟。例如,在 10:04:15.250 PM 这一时刻,HOUR_OF_DAY
为 22。
MINUTE
public static final int MINUTE
get
和set
的字段数字,指示一小时中的分钟。例如,在 10:04:15.250 PM 这一时刻,MINUTE
为 4。- 另请参见:
- 常量字段值
SECOND
public static final int SECOND
get
和set
的字段数字,指示一分钟中的秒。例如,在 10:04:15.250 PM 这一时刻,SECOND
为 15。- 另请参见:
- 常量字段值
MILLISECOND
public static final int MILLISECOND
get
和set
的字段数字,指示一秒中的毫秒。例如,在 10:04:15.250 PM 这一时刻,MILLISECOND
为 250。- 另请参见:
- 常量字段值
ZONE_OFFSET
public static final int ZONE_OFFSET
get
和set
的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。如果
TimeZone
实现子类支持历史上用过的 GMT 偏移量更改,则此字段可反应此Calendar
时区的正确 GMT 偏移量值。- 另请参见:
- 常量字段值
DST_OFFSET
public static final int DST_OFFSET
get
和set
的字段数字,以毫秒为单位指示夏令时的偏移量。如果
TimeZone
实现子类支持历史上用过的 Daylight Saving Time 时间表更改,则此字段可反应此Calendar
时区的正确夏令时偏移量值。- 另请参见:
- 常量字段值
FIELD_COUNT
public static final int FIELD_COUNT
get
和set
可识别的不同字段的数量。字段编号的范围是从 0 到FIELD_COUNT-1
。- 另请参见:
- 常量字段值
SUNDAY
public static final int SUNDAY
- 指示 Sunday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
MONDAY
public static final int MONDAY
- 指示 Monday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
TUESDAY
public static final int TUESDAY
- 指示 Tuesday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
WEDNESDAY
public static final int WEDNESDAY
- 指示 Wednesday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
THURSDAY
public static final int THURSDAY
- 指示 Thursday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
FRIDAY
public static final int FRIDAY
- 指示 Friday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
SATURDAY
public static final int SATURDAY
- 指示 Saturday 的
DAY_OF_WEEK
字段值。- 另请参见:
- 常量字段值
JANUARY
public static final int JANUARY
FEBRUARY
public static final int FEBRUARY
MARCH
public static final int MARCH
APRIL
public static final int APRIL
MAY
public static final int MAY
JUNE
public static final int JUNE
JULY
public static final int JULY
AUGUST
public static final int AUGUST
SEPTEMBER
public static final int SEPTEMBER
OCTOBER
public static final int OCTOBER
NOVEMBER
public static final int NOVEMBER
DECEMBER
public static final int DECEMBER
UNDECIMBER
public static final int UNDECIMBER
AM
public static final int AM
PM
public static final int PM
ALL_STYLES
public static final int ALL_STYLES
- 指示所有风格名称的
getDisplayNames
的风格说明符,比如 "January" 和 "Jan"。
SHORT
public static final int SHORT
- 指示短名称的
getDisplayName
和getDisplayNames
的风格说明符,比如 "Jan"。
LONG
public static final int LONG
- 指示长名称的
getDisplayName
和getDisplayNames
的风格说明符,比如 "January"。
fields
protected int[] fields
- 此日历当前设置时间的日历字段值。这是一个
FIELD_COUNT
整数数组,索引值为 ERA 到DST_OFFSET
。
isSet
protected boolean[] isSet
- 通知是否设置了该日历某一指定日历字段的标志。新的对象没有设置任何字段。在第一次调用生成该字段的某一方法后,这些字段都将保留调用之后的设置。这是一个
FIELD_COUNT
布尔值数组,索引值为 ERA 到DST_OFFSET
。
time
protected long time
- 日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。
- 另请参见:
isTimeSet
isTimeSet
protected boolean isTimeSet
- 如果
time
值是一个有效值,则返回 true。通过更改field[]
的项,可以使时间无效。- 另请参见:
time
areFieldsSet
protected boolean areFieldsSet
- 如果
fields[]
与当前的设置时间同步,则返回 true。如果返回 false,则在下一次试图获得某一字段的值时,将强行重新计算time
当前值中的所有字段。
构造方法详细信息 |
---|
Calendar
protected Calendar()
- 构造一个带有默认时区和语言环境的 Calendar。
Calendar
protected Calendar(TimeZone zone, Locale aLocale)
- 构造一个带有指定时区和语言环境的 Calendar。
- 参数:
zone
- 要使用的时区aLocale
- 用于星期数据的语言环境
方法详细信息 |
---|
getInstance
public static Calendar getInstance()
- 使用默认时区和语言环境获得一个日历。返回的
Calendar
基于当前时间,使用了默认时区和默认语言环境。 - 返回:
- 一个 Calendar。
getInstance
public static Calendar getInstance(TimeZone zone)
- 使用指定时区和默认语言环境获得一个日历。返回的
Calendar
基于当前时间,使用了给定时区和默认语言环境。 - 参数:
zone
- 要使用的时区- 返回:
- 一个 Calendar。
getInstance
public static Calendar getInstance(Locale aLocale)
- 使用默认时区和指定语言环境获得一个日历。返回的
Calendar
基于当前时间,使用了默认时区和给定的语言环境。 - 参数:
aLocale
- 用于星期数据的语言环境- 返回:
- 一个 Calendar。
getInstance
public static Calendar getInstance(TimeZone zone, Locale aLocale)
- 使用指定时区和语言环境获得一个日历。返回的
Calendar
基于当前时间,使用了给定的时区和给定的语言环境。 - 参数:
zone
- 要使用的时区aLocale
- 用于星期数据的语言环境- 返回:
- 一个 Calendar。
getAvailableLocales
public static Locale[] getAvailableLocales()
- 返回所有语言环境的数组,此类的
getInstance
方法可以为其返回本地化的实例。返回的数组必须至少包含一个Locale
实例,它等同Locale.US
。 - 返回:
- 语言环境的数组,对于该数组,本地化的
Calendar
实例是可用的。
computeTime
protected abstract void computeTime()
- 将
fields[]
中的当前日历字段值转换为毫秒时间值time
。 - 另请参见:
complete()
,computeFields()
computeFields
protected abstract void computeFields()
- 将当前毫秒时间值
time
转换为fields[]
中的日历字段值。这允许您将该日历字段值与为日历设置的新时间同步。并 不 首先重新计算该时间;为了重新计算时间和字段,请调用complete()
方法。 - 另请参见:
computeTime()
getTime
public final Date getTime()
- 返回一个表示此
Calendar
时间值(从 历元至现在的毫秒偏移量)的Date
对象。 - 返回:
- 表示时间值的
Date
。 - 另请参见:
setTime(Date)
,getTimeInMillis()
setTime
public final void setTime(Date date)
- 使用给定的
Date
设置此 Calendar 的时间。注:使用
Date(Long.MAX_VALUE)
或Date(Long.MIN_VALUE)
调用setTime()
可能产生来自get()
的错误字段值。 - 参数:
date
- 给定的 Date。- 另请参见:
getTime()
,setTimeInMillis(long)
getTimeInMillis
public long getTimeInMillis()
- 返回此 Calendar 的时间值,以毫秒为单位。
- 返回:
- 当前时间,以从历元至现在所经过的 UTC 毫秒数形式。
- 另请参见:
getTime()
,setTimeInMillis(long)
setTimeInMillis
public void setTimeInMillis(long millis)
- 用给定的 long 值设置此 Calendar 的当前时间值。
- 参数:
millis
- 新时间,以从历元至现在所经过的 UTC 毫秒数形式。- 另请参见:
setTime(Date)
,getTimeInMillis()
get
public int get(int field)
- 返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,则此方法抛出一个异常。标准化和验证都是通过
complete()
方法处理的,这个过程与日历系统有关。 - 参数:
field
- 给定的日历字段。- 返回:
- 给定日历字段的值。
- 抛出:
ArrayIndexOutOfBoundsException
- 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT
)。- 另请参见:
set(int,int)
,complete()
internalGet
protected final int internalGet(int field)
- 返回给定日历字段的值。此方法不涉及字段值的标准化或验证。
- 参数:
field
- 给定的日历字段。- 返回:
- 给定日历字段的值。
- 另请参见:
get(int)
set
public void set(int field, int value)
- 将给定的日历字段设置为给定值。不管处于何种宽松性模式下,该值都不由此方法进行解释。
- 参数:
field
- 给定的日历字段。value
- 给定日历字段所要设置的值。- 抛出:
ArrayIndexOutOfBoundsException
- 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT
),并且处于 non-lenient 模式下。- 另请参见:
set(int,int,int)
,set(int,int,int,int,int)
,set(int,int,int,int,int,int)
,get(int)
set
public final void set(int year, int month, int date)
- 设置日历字段
YEAR
、MONTH
和DAY_OF_MONTH
的值。保留其他日历字段以前的值。如果不需要这样做,则先调用clear()
。 - 参数:
year
- 用来设置YEAR
日历字段的值。month
- 用来设置MONTH
日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date
- 用来设置DAY_OF_MONTH
日历字段的值。- 另请参见:
set(int,int)
,set(int,int,int,int,int)
,set(int,int,int,int,int,int)
set
public final void set(int year, int month, int date, int hourOfDay, int minute)
- 设置日历字段
YEAR
、MONTH
、DAY_OF_MONTH
、HOUR_OF_DAY
和MINUTE
的值。保留其他字段以前的值。如果不需要这样做,则先调用clear()
。 - 参数:
year
- 用来设置YEAR
日历字段的值。month
- 用来设置MONTH
日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date
- 用来设置DAY_OF_MONTH
日历字段的值。hourOfDay
- 用来设置HOUR_OF_DAY
日历字段的值。minute
- 用来设置MINUTE
日历字段的值。- 另请参见:
set(int,int)
,set(int,int,int)
,set(int,int,int,int,int,int)
set
public final void set(int year, int month, int date, int hourOfDay, int minute, int second)
- 设置字段
YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
、MINUTE
和SECOND
的值。保留其他字段以前的值。如果不需要这样做,则先调用clear()
。 - 参数:
year
- 用来设置YEAR
日历字段的值。month
- 用来设置MONTH
日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date
- 用来设置DAY_OF_MONTH
日历字段的值。hourOfDay
- 用来设置HOUR_OF_DAY
日历字段的值。minute
- 用来设置MINUTE
日历字段的值。second
- 用来设置SECOND
日历字段的值。- 另请参见:
set(int,int)
,set(int,int,int)
,set(int,int,int,int,int)
clear
public final void clear()
- 将此
Calendar
的所日历字段值和时间值(从 历元至现在的毫秒偏移量)设置成未定义。这意味着isSet()
对于所有的日历字段都将返回false
,并且日期和时间计算会将这些字段作为从未设置的字段对待。Calendar
实现类可能对日期/时间计算使用字段的特定默认值。例如,如果未定义YEAR
字段值,则GregorianCalendar
会使用 1970。 - 另请参见:
clear(int)
clear
public final void clear(int field)
- 将此
Calendar
的给定日历字段值和时间值(从 历元至现在的毫秒偏移量)设置成未定义。这意味着isSet(field)
将返回false
,并且日期和时间计算会将该字段作为从未设置的字段对待。Calendar
实现类可能对日期和时间计算使用字段的特定默认值。HOUR_OF_DAY
、HOUR
和AM_PM
字段都是单独处理的,并且应用了一天中时间的解析规则。清除其中的一个字段不会重置此Calendar
中的小时值。使用set(Calendar.HOUR_OF_DAY, 0)
重置小时值。 - 参数:
field
- 要清除的日历字段。- 另请参见:
clear()
isSet
public final boolean isSet(int field)
- 确定给定日历字段是否已经设置了一个值,其中包括因为调用
get
方法触发内部字段计算而导致已经设置该值的情况。 - 返回:
- 如果给定日历字段已经设置了一个值,则返回
true
;否则返回false
。
getDisplayName
public String getDisplayName(int field, int style, Locale locale)
- 返回给定
style
和locale
下的日历field
值的字符串表示形式。如果没有可用的字符串表示形式,则返回null
。如果字符串表示形式可用于给定的日历field
,则此方法调用get(field)
来获取日历field
值。例如,如果此
Calendar
是GregorianCalendar
并且其日期是 2005-01-01,那么MONTH
字段的字符串表示形式在英语语言环境中将是 long 类型的 "January" 或者 short 类型的 "Jan"。然而,DAY_OF_MONTH
字段没有可用的字符串表示形式,并且此方法将返回null
。默认实现支持日历字段,
DateFormatSymbols
在给定locale
中具有此类名称。 - 参数:
field
- 其字符串表示形式返回的日历字段style
- 应用于字符串表示形式的类型;SHORT
或LONG
之一。locale
- 字符串表示形式的语言环境- 返回:
- 给定
style
中给定field
的字符串表示形式;如果没有可用的字符串表示形式,则返回null
。 - 抛出:
IllegalArgumentException
- 如果field
或style
无效,如果此Calendar
处于 non-lenient 模式并且所有日历字段都有无效值NullPointerException
- 如果locale
为 null- 从以下版本开始:
- 1.6
getDisplayNames
public Map<String,Integer> getDisplayNames(int field, int style, Locale locale)
- 返回给定
style
和locale
下包含日历field
所有名称的Map
及其相应字段值。例如,如果此Calendar
是GregorianCalendar
,则在英语语言环境的 short 类型中的返回映射将包含 "Jan" 到JANUARY
,"Feb" 到FEBRUARY
诸如此类。可以考虑用其他日历字段值来确定显示名称集。例如,如果此
Calendar
是月与日的日历系统并且由YEAR
字段给定的年值有闰月,此方法将返回包含闰月名称的月名称,并且月名称被映射到该年中其指定值。默认实现支持
DateFormatSymbols
中包含的显示名称。例如,如果field
是MONTH
并且style
是ALL_STYLES
,则此方法返回包含DateFormatSymbols.getShortMonths()
和DateFormatSymbols.getMonths()
返回的所有字符串的Map
。 - 参数:
field
- 其返回显示名称的日历字段style
- 应用于显示名称的风格;SHORT
、LONG
或ALL_STYLES
之一。locale
- 显示名称的语言环境- 返回:
- 包含
style
和locale
下的所有显示名称的Map
及其字段值;如果没有显示名称,则返回null
- 抛出:
IllegalArgumentException
- 如果field
或style
无效,如果此Calendar
处于 non-lenient 模式并且所有日历字段都有无效值NullPointerException
- 如果locale
为 null- 从以下版本开始:
- 1.6
complete
protected void complete()
- 填充日历字段中所有未设置的字段。首先,如果已经从日历字段值中计算出了时间值(从 历元至现在的毫秒偏移量),则调用
computeTime()
方法。然后调用computeFields()
方法来计算所有的日历字段值。
equals
public boolean equals(Object obj)
- 将此
Calendar
与指定Object
比较。当且仅当参数是同一日历系统的Calendar
对象时,结果才为true
,该日历系统将同一Calendar
参数下的同一时间值(从 历元至现在的毫秒偏移量)表示为此对象。Calendar
参数是通过isLenient
、getFirstDayOfWeek
、getMinimalDaysInFirstWeek
和getTimeZone
方法表示的值。如果在两个Calendar
之间这些参数中存在任何不同之处,则此方法返回false
。使用
compareTo
方法来仅对时间值进行比较。 - 参数:
obj
- 要与之比较的对象。- 返回:
- 如果此对象等于
obj
,则返回true
;否则返回false
。 - 另请参见:
Object.hashCode()
,Hashtable
hashCode
public int hashCode()
- 返回该此日历的哈希码。
- 返回:
- 此对象的哈希码值。
- 从以下版本开始:
- 1.2
- 另请参见:
Object.equals(java.lang.Object)
,Hashtable
before
public boolean before(Object when)
- 判断此
Calendar
表示的时间是否在指定Object
表示的时间之前,返回判断结果。此方法等效于:compareTo(when) < 0
当且仅当when
是一个Calendar
实例时才返回 true。否则该方法返回false
。 - 参数:
when
- 要比较的Object
- 返回:
- 如果此
Calendar
的时间在when
表示的时间之前,则返回true
;否则返回false
。 - 另请参见:
compareTo(Calendar)
after
public boolean after(Object when)
- 判断此
Calendar
表示的时间是否在指定Object
表示的时间之后,返回判断结果。此方法等效于:compareTo(when) > 0
当且仅当when
是一个Calendar
实例时才返回 true。否则该方法返回false
。 - 参数:
when
- 要比较的Object
- 返回:
- 如果此
Calendar
的时间在when
表示的时间之后,则返回true
;否则返回false
。 - 另请参见:
compareTo(Calendar)
compareTo
public int compareTo(Calendar anotherCalendar)
- 比较两个
Calendar
对象表示的时间值(从 历元至现在的毫秒偏移量)。 - 指定者:
- 接口
Comparable<Calendar>
中的compareTo
- 参数:
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
- 为字段添加的日期或时间量。- 另请参见:
roll(int,int)
,set(int,int)
roll
public abstract void roll(int field, boolean up)
- 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。例如,要将当前日期向上滚动一天,可以通过调用以下方法做到这一点:
roll(Calendar.DATE, true)。在 year 或 Calendar.YEAR 字段上滚动时,将在从 1 到调用
getMaximum(Calendar.YEAR)
的返回值之间的范围内滚动 year 值。在 month 或 Calendar.MONTH 字段上滚动时,其他字段(如 date)可能发生冲突,因此需要更改它们。例如,在日期 01/31/96 上滚动 month 将产生 02/29/96 的日期。在 hour-in-day 或 Calendar.HOUR_OF_DAY 字段上滚动时,小时值会在 0 到 23 之间的范围内滚动,它是基于 0 的。 - 参数:
field
- 时间字段。up
- 指示指定时间字段的值是向上滚动还是向下滚动。如果向上滚动,则使用 true,否则使用 false。- 另请参见:
add(int,int)
,set(int,int)
roll
public void roll(int field, int amount)
- 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。负的时间量意味着向下滚动。
注:
Calendar
上的此默认实现只是重复地调用滚动一个单元的roll()
版本。这可能并非总是正确的。例如,如果DAY_OF_MONTH
字段为 31,则在 February 的范围内滚动会将它设置为 28。此函数的GregorianCalendar
版本会小心地处理这个问题。其他子类还应该提供此函数的重写版本,以正确实现该功能。 - 参数:
field
- 日历字段。amount
- 要添加到日历field
中的有符号时间量。- 从以下版本开始:
- 1.2
- 另请参见:
roll(int,boolean)
,add(int,int)
,set(int,int)
setTimeZone
public void setTimeZone(TimeZone value)
- 使用给定的时区值来设置时区。
- 参数:
value
- 给定的时区。
getTimeZone
public TimeZone getTimeZone()
- 获得时区。
- 返回:
- 与此日历有关的时区对象。
setLenient
public void setLenient(boolean lenient)
- 指定日期/时间解释是否是宽松的。对于宽松的解释,可以将诸如 "February 942, 1996" 之类的日期视为等同于 1996 年 1 月 1 日后的第 941 天。而对于严格的(non-lenient)解释,这样的日期会导致抛出异常。默认情况下是宽松的。
- 参数:
lenient
- 如果开启 lenient 模式,则为true
;如果关闭此模式,则为false
。- 另请参见:
isLenient()
,DateFormat.setLenient(boolean)
isLenient
public boolean isLenient()
- 判断日期/时间的解释是否为宽松的。
- 返回:
- 如果此日历的解释模式是 lenient,则返回
true
;否则返回false
。 - 另请参见:
setLenient(boolean)
setFirstDayOfWeek
public void setFirstDayOfWeek(int value)
- 设置一星期的第一天是哪一天;例如,在美国,这一天是
SUNDAY
,而在法国,这一天是MONDAY
。 - 参数:
value
- 给出的一星期的第一天。- 另请参见:
getFirstDayOfWeek()
,getMinimalDaysInFirstWeek()
getFirstDayOfWeek
public int getFirstDayOfWeek()
- 获取一星期的第一天;例如,在美国,这一天是
SUNDAY
,而在法国,这一天是MONDAY
。 - 返回:
- 一星期的第一天。
- 另请参见:
setFirstDayOfWeek(int)
,getMinimalDaysInFirstWeek()
setMinimalDaysInFirstWeek
public void setMinimalDaysInFirstWeek(int value)
- 设置一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则使用值 1 调用此方法。如果最少天数必须是一整个星期,则使用值 7 调用此方法。
- 参数:
value
- 一年中第一个星期所需的给定最少天数。- 另请参见:
getMinimalDaysInFirstWeek()
getMinimalDaysInFirstWeek
public int getMinimalDaysInFirstWeek()
- 获取一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则此方法将返回 1。如果最少天数必须是一整个星期,则此方法将返回 7。
- 返回:
- 一年中第一个星期所需的最少天数。
- 另请参见:
setMinimalDaysInFirstWeek(int)
getMinimum
public abstract int getMinimum(int field)
- 返回此
Calendar
实例给定日历字段的最小值。最小值被定义为get
方法为任何可能时间值返回的最小值。最小值取决于日历系统实例的特定参数。 - 参数:
field
- 日历字段。- 返回:
- 给定日历字段的最小值。
- 另请参见:
getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
getMaximum
public abstract int getMaximum(int field)
- 返回此
Calendar
实例给定日历字段的最大值。最大值被定义为get
方法为任何可能时间值返回的最大值。最大值取决于日历系统实例的特定参数。 - 参数:
field
- 日历字段。- 返回:
- 给定日历字段的最大值。
- 另请参见:
getMinimum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
getGreatestMinimum
public abstract int getGreatestMinimum(int field)
- 返回此
Calendar
实例给定日历字段的最高的最小值。最高的最小值被定义为getActualMinimum(int)
方法为任何可能时间值返回的最大值。最高的最小值取决于日历系统实例的特定参数。 - 参数:
field
- 日历字段。- 返回:
- 给定日历字段的最高的最小值。
- 另请参见:
getMinimum(int)
,getMaximum(int)
,getLeastMaximum(int)
,getActualMinimum(int)
,getActualMaximum(int)
getLeastMaximum
public abstract int getLeastMaximum(int field)
- 返回此
Calendar
实例给定日历字段的最低的最大值。最低的最大值被定义为getActualMaximum(int)
方法为任何可能时间值返回的最小值。最低的最大值取决于日历系统实例的特定参数。例如,对于格里高利历系统,Calendar
将为DAY_OF_MONTH
字段返回 28,因为第 28 天是该日历最短那个月的最后一天,即普通年的二月。 - 参数:
field
- 日历字段。- 返回:
- 给定日历字段的最低的最大值。
- 另请参见:
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getActualMinimum(int)
,getActualMaximum(int)
getActualMinimum
public int getActualMinimum(int field)
- 给定此
Calendar
的时间值,返回指定日历字段可能拥有的最小值。此方法的默认实现使用了一个迭代算法来确定日历字段的实际最小值。如果可能的话,子类应该使用更有效的实现来重写此方法——在许多情况下,它们只是简单地返回
getMinimum()
。 - 参数:
field
- 日历字段- 返回:
- 对于此
Calendar
的时间值而言,给定日历字段的最小值 - 从以下版本开始:
- 1.2
- 另请参见:
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMaximum(int)
getActualMaximum
public int getActualMaximum(int field)
- 给定此
Calendar
的时间值,返回指定日历字段可能拥有的最大值。例如,在某些年份中,MONTH
字段的实际最大值是 12,而在希伯来日历系统的其他年份中,该字段的实际最大值是 13。此方法的默认实现使用了一个迭代算法来确定日历字段的实际最大值。如果有可能的话,子类应该使用一个更有效的实现来重写此方法。
- 参数:
field
- 日历字段- 返回:
- 对于此
Calendar
的时间值而言,给定日历字段的最大值 - 从以下版本开始:
- 1.2
- 另请参见:
getMinimum(int)
,getMaximum(int)
,getGreatestMinimum(int)
,getLeastMaximum(int)
,getActualMaximum(int)
clone
public Object clone()
toString
public String toString()