当前位置 类层次 (JDK) 所有类 (JDK) 所有域和方法 (JDK)

类 java.util.Calendar

java.lang.Object
   |
   +----java.util.Calendar

public abstract class Calendar
extends Object
implements Serializable, Cloneable
下列类的父类:
GregorianCalendar

Calendar 是一个抽象的基类,用于在一个 Date 对象和一个诸如 YEARMONTHDAYHOUR 等整数字段集合之间转换。 (Date 对象代表一个时间精度为毫秒达到特定实例。 关于 Date 类的信息请参见 java.util.Date。)

Calendar 的子类根据一个特定的日历系统解释一个 Date。 JDK 提供了 Calendar 的一个具体的子类: GregorianCalendar。 将来的子类将代表世界上大部分地区使用的各种类型的阴历。

同其它国别敏感的类一样,Calendar 提供了一个类方法 getInstance,以获得该类型的一个通用的对象。 CalendargetInstance 方法返回一个 GregorianCalendar 对象,该对象的时间域由当前的日期和时间初始化:

 Calendar rightNow = Calendar.getInstance();
 

Calendar 对象能够产生为特定语言和日历风格格式化所需实现的日期_时间的所有时间域值。( 例如,日语-格里高里日历,日语-传统日历 ) 。

当从时间域中计算 Date时,可能会出现两种情况:或者没有足够的信息计算 Date ( 例如只有年和月但没有日 ) 或者有矛盾的信息 ( 例如 "Tuesday, July 15, 1996" -- 实际上,1996 年 7 月 15 日是星期一 )。

没有足够的信息。 日历将使用缺省信息指定缺少的域。 这将根据不同日历有所不同;对于格里高里日历,域的缺省值等于开始时间: 例如,YEAR = 1970,MONTH = JANUARY,DATE = 1 等等。

矛盾的信息。 如果域值有冲突,日历将参考最近设置的域值。 例如,当确定日时,日历将参考下列域的组合之一。将使用由最近设置的单个域确定的最近的组合。

 MONTH + DAY_OF_MONTH
 MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
 MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
 DAY_OF_YEAR
 DAY_OF_WEEK + WEEK_OF_YEAR
 
对于一天内的时间:
 HOUR_OF_DAY
 AM_PM + HOUR
 

注意: 对于非格里高里日历,为了保证完全没有歧义,可能会需要不同的域。 例如,关于阿拉伯宇宙日历的完整的规格说明有时需要年、月、一月中的日期一周中的日期。

注意:对于某些特别的时间的解释可能会有一定的歧义,这可以用下列方式解决:

  1. 24:00:00 “属于”下一天。即,1969 年 11 月 31 日 23:59 < 1970 年 1 月 1 日 24:00 < 1970 年 1 月 1 日 24:01:00。
  2. 尽管历史的来看不精确,午夜也属于“上午”,中午属于“下午”,所以在同一天,12:00 am ( 午夜 ) < 12:01 am,12:00 pm ( 中午 ) < 12:01 pm。

日期或时间格式字符串不是日历定义的一部分,因为在运行时,它们必须能够由用户修改或重写。使用 java.text.DateFormat 格式化日期。

Calendar 为域的“滚动”提供了一个 API,域可以被加一或减一,但是循环滚动。 例如,将日期 "September 12, 1996" 向上滚动一个月结果是 "October 12, 1996"。

Calendar 也为将指定 ( 带符号的 ) 数量的时间添加到特定的时间域中提供了一个日期计算功能。 例如,将日期 "September 12, 1996" 减 5 天得到 "September 7, 1996"。

参见:
Date, GregorianCalendar, TimeZone, DateFormat

变量索引

AM
12 小时时钟的可用常数。
AM_PM
日期和时间的可用常数。
APRIL
月的可用常数。
areFieldsSet
如果该域与 Calendar 的当前时间集合同步则为 true。
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
月的可用常数。
MARCH
月的可用常数。
MAY
月的可用常数。
MILLISECOND
日期和时间的可用常数。
MINUTE
日期和时间的可用常数。
MONDAY
星期的可用常数。
MONTH
日期和时间的可用常数。
NOVEMBER
月的可用常数。
OCTOBER
月的可用常数。
PM
12 小时时钟时间的可用常数。
SATURDAY
星期的可用常数。
SECOND
日期和时间的可用常数。
SEPTEMBER
月的可用常数。
SUNDAY
星期的可用常数。
THURSDAY
星期的可用常数。
time
为日历设置的当前时间。
TUESDAY
星期的可用常数。
UNDECIMBER
月的可用常数。
WEDNESDAY
星期的可用常数。
WEEK_OF_MONTH
日期和时间的可用常数。
WEEK_OF_YEAR
日期和时间的可用常数。
YEAR
日期和时间的可用常数。
ZONE_OFFSET
日期和时间的可用常数。

构造子索引

Calendar()
用 TimeZone.getDefault() 返回的缺省的时区和缺省的语言环境构造一个日历。
Calendar(TimeZone, Locale)
用该给定的时区和语言环境构造一个日历。

方法索引

add(int, int)
日期的计算功能。
after(Object)
比较时间域记录。
before(Object)
比较时间域记录。
clear()
将所有时间域值清零。
clear(int)
将给定的时间域值清零。
clone()
覆盖 Cloneable
complete()
填充时间域列表中所有未设置的域。
computeFields()
将 UTC 作为毫秒数转换为时间域值。
computeTime()
将日历的时间域值作为毫秒数转换为 UTC。
equals(Object)
比较该日历和指定的对象。
get(int)
获得给定时间域的值。
getAvailableLocales()
获得安装 Calendars 的语言环境集合。
getFirstDayOfWeek()
获得一周的第一天;例如在美国为 Sunday,在法国为 Monday。
getGreatestMinimum(int)
获得给定域变化时的最高的最小值。
getInstance()
获得使用缺省时区和语言环境的日历。
getInstance(Locale)
获得使用缺省时区和给定语言环境的日历。
getInstance(TimeZone)
获得使用给定时区和缺省语言环境的日历。
getInstance(TimeZone, Locale)
获得使用给定时区和给定语言环境的日历。
getLeastMaximum(int)
获得给定域变化时的最低的最大值。
getMaximum(int)
获取给定时间域最大值。
getMinimalDaysInFirstWeek()
获得该年中第一个星期所需要的最少的天数,例如,如果定义第一个星期包含一年第一个月的第一天,getMinimalDaysInFirstWeek 返回 1。
getMinimum(int)
获得给定时间域最小值。
getTime()
获得日历的当前时间。
getTimeInMillis()
获得日历的当前时间,作为一个长整数。
getTimeZone()
获得时区。
internalGet(int)
获得给定时间域的值。
isLenient()
指明对日期/时间的解释是否是宽松的。
isSet(int)
确定给定的时间域是否设置了数值。
roll(int, boolean)
时间域滚动功能。
set(int, int)
用给定的值设置时间域。
set(int, int, int)
设置年、月、日期域的数值。
set(int, int, int, int, int)
设置年、月、日期、时和分域的数值。
set(int, int, int, int, int, int)
设置年、月、日期、时、分和秒域的数值。
setFirstDayOfWeek(int)
设置一周的第一天;例如在美国为 Sunday,在法国为 Monday。
setLenient(boolean)
指明对日期/时间的解释是否是宽松的。
setMinimalDaysInFirstWeek(int)
设置该年中第一个星期所需要的最少的天数,例如,定义第一个星期包含一年第一个月的第一天,用值 1 调用该方法。
setTime(Date)
用给定的 Date 设置 Calendar 的当前时间。
setTimeInMillis(long)
用给定的长整数设置 Calendar 的当前时间。
setTimeZone(TimeZone)
用给定的时区值设置时区。
toString()
返回日历的字符串表示。

变量

ERA
 public static final int ERA
日期和时间的可用常数。 用于时间域中。 ERA 是日历专用的。

YEAR
 public static final int YEAR
日期和时间的可用常数。 用于时间域中。

MONTH
 public static final int MONTH
日期和时间的可用常数。 用于时间域中。

WEEK_OF_YEAR
 public static final int WEEK_OF_YEAR
日期和时间的可用常数。 用于时间域中。

WEEK_OF_MONTH
 public static final int WEEK_OF_MONTH
日期和时间的可用常数。 用于时间域中。

DATE
 public static final int DATE
日期和时间的可用常数。 用于时间域中。 它是 DAY_OF_MONTH 的同义词。

DAY_OF_MONTH
 public static final int DAY_OF_MONTH
日期和时间的可用常数。 用于时间域中。 它是 DATE 的同义词。

DAY_OF_YEAR
 public static final int DAY_OF_YEAR
日期和时间的可用常数。 用于时间域中。

DAY_OF_WEEK
 public static final int DAY_OF_WEEK
日期和时间的可用常数。 用于时间域中。

DAY_OF_WEEK_IN_MONTH
 public static final int DAY_OF_WEEK_IN_MONTH
日期和时间的可用常数。 用于时间域中。

AM_PM
 public static final int AM_PM
日期和时间的可用常数。 用于时间域中。

HOUR
 public static final int HOUR
日期和时间的可用常数。 用于时间域中。 HOUR 用于 12 小时时钟。

HOUR_OF_DAY
 public static final int HOUR_OF_DAY
日期和时间的可用常数。 用于时间域中。 HOUR_OF_DAY 用于 24 小时时钟。

MINUTE
 public static final int MINUTE
日期和时间的可用常数。 用于时间域中。

SECOND
 public static final int SECOND
日期和时间的可用常数。 用于时间域中。

MILLISECOND
 public static final int MILLISECOND
日期和时间的可用常数。 用于时间域中。

ZONE_OFFSET
 public static final int ZONE_OFFSET
日期和时间的可用常数。 用于时间域中。

DST_OFFSET
 public static final int DST_OFFSET
日期和时间的可用常数。 用于时间域中。

FIELD_COUNT
 public static final int FIELD_COUNT
日期和时间的可用常数。 FIELD_COUNT 用于时间域数组的创建。

SUNDAY
 public static final int SUNDAY
星期的可用常数。 用于格里高里日历。

MONDAY
 public static final int MONDAY
星期的可用常数。 用于格里高里日历。

TUESDAY
 public static final int TUESDAY
星期的可用常数。 用于格里高里日历。

WEDNESDAY
 public static final int WEDNESDAY
星期的可用常数。 用于格里高里日历。

THURSDAY
 public static final int THURSDAY
星期的可用常数。 用于格里高里日历。

FRIDAY
 public static final int FRIDAY
星期的可用常数。 用于格里高里日历。

SATURDAY
 public static final int SATURDAY
星期的可用常数。 用于格里高里日历。

JANUARY
 public static final int JANUARY
月的可用常数。 用于格里高里日历。 注意:现在日历的月以 0 开始。

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
月的可用常数。 用于格里高里日历。 UNDECIMBER 是一个人为的名称。第 13 个月用于阴历。

AM
 public static final int AM
12 小时时钟时间的可用常数。 用于格里高里日历。

PM
 public static final int PM
12 小时时钟时间的可用常数。 用于格里高里日历。

fields
 protected int fields[]
包含计算毫秒值的时间域。

isSet
 protected boolean isSet[]
指明日历的指定时间域是否设置的标志。 新建对象的域没有设置。当第一次调用生成该域的方法之后,它们都保持设置。

time
 protected long time
为日历设置的当前时间。

isTimeSet
 protected boolean isTimeSet
指示是否设置了日历中当前时间的标志。 用户通过设置一个私有域使该时间无效。

areFieldsSet
 protected boolean areFieldsSet
如果该域与 Calendar 的当前时间集合同步则为 true。 如果为 false,下一次试图获得一个域的数值时将强迫根据时间域的当前值重新计算所有域的值。 实际上它应该被命名为 areFieldsInSync, 但是为了向下兼容性旧名仍然保留下来。


构造子

Calendar
 protected Calendar()
用 TimeZone.getDefault() 返回的缺省的时区和缺省的语言环境构造一个日历。

参见:
getDefault
Calendar
 protected Calendar(TimeZone zone,
                    Locale aLocale)
用该给定的时区和语言环境构造一个日历。

参数:
zone - 给定的时区。

方法

getInstance
 public static synchronized Calendar getInstance()
用缺省时区和语言环境获得一个日历。

返回值:
一个 Calendar。
getInstance
 public static synchronized Calendar getInstance(TimeZone zone)
用给定时区和缺省语言环境获得一个日历。

参数:
zone - 给定的时区。
返回值:
一个 Calendar。
getInstance
 public static synchronized Calendar getInstance(Locale aLocale)
用缺省时区和给定语言环境获得一个日历。

参数:
aLocale - 给定的语言环境。
返回值:
一个 Calendar。
getInstance
 public static synchronized Calendar getInstance(TimeZone zone,
                                                 Locale aLocale)
用给定时区和给定语言环境获得一个日历。

参数:
zone - 给定的时区。
aLocale - 给定的语言环境。
返回值:
一个 Calendar。
getAvailableLocales
 public static synchronized Locale[] getAvailableLocales()
获得安装 Calendars 的语言环境集合。

返回值:
安装 Calendars 的语言环境集合。
computeTime
 protected abstract void computeTime()
将日历的时间域作为毫秒值转换为 UTC。

computeFields
 protected abstract void computeFields()
将 UTC 作为毫秒值转换为时间域值。 允许使时间域值与日历设置的新时间同步。 开始重新计算该时间;为了重新计算时间和域,调用 complete 方法。

参见:
complete
getTime
 public final Date getTime()
获得日历的当前时间。

返回值:
当前的时间。
setTime
 public final void setTime(Date date)
用给定的 Date 设置 Calendar 的当前时间。

参数:
date - 给定的 Date。
getTimeInMillis
 protected long getTimeInMillis()
获得日历的作为长整型的当前时间。

返回值:
当前时间,作为从开始时间的 UTC 毫秒值。
setTimeInMillis
 protected void setTimeInMillis(long millis)
用给定的长整数设置 Calendar 的当前时间。

参数:
date - 新时间,从开始时间的 UTC 毫秒时间。
get
 public final int get(int field)
获得给定时间域的值。

参数:
field - 给定的时间域。
返回值:
给定的时间域值。
internalGet
 protected final int internalGet(int field)
获取给定时间域的值。 这是子类的一个内部快速时间域值 getter。

参数:
field - 给定的时间域。
返回值:
给定的时间域值。
set
 public final void set(int field,
                int value)
用给定的值设置时间域。

参数:
field - 给定的时间域。
value - 要设置的给定时间域的值。
set
 public final void set(int year,
                       int month,
                       int date)
设置年、月、日期域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear

参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
set
 public final void set(int year,
                       int month,
                       int date,
                       int hour,
                       int minute)
设置年、月、日期、时和分域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear

参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
hour - 用于设置 HOUR 时间域的值。
minute - 用于设置 MINUTE 时间域的值。
set
 public final void set(int year,
                       int month,
                       int date,
                       int hour,
                       int minute,
                       int second)
设置年、月、日期、时、分和秒域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear

参数:
year - 用于设置 YEAR 时间域的值。
month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
date - 用于设置 DATE 时间域的值。
hour - 用于设置 HOUR 时间域的值。
minute - 用于设置 MINUTE 时间域的值。
second - 用于设置 SECOND 时间域的值。
clear
 public final void clear()
将所有时间域值清零。

clear
 public final void clear(int field)
将给定的时间域值清零。

参数:
field - 要清零的时间域。
isSet
 public final boolean isSet(int field)
确定给定的时间域是否设置了数值。

返回值:
如果给定的时间域设置了数值则返回 true;否则返回 false。
complete
 protected void complete()
填充时间域列表中所有未设置的域。

equals
 public abstract boolean equals(Object obj)
比较该日历和指定的对象。 当且仅当参数不为 null 而是与该对象描述同一日历的 Calendar 对象,结果为 true

参数:
obj - 比较的对象。
返回值:
如果对象相同则为 true,否则为 false
覆盖:
Object 中的 equals
before
 public abstract boolean before(Object when)
比较时间域记录。 等价于比较转换到 UTC 的结果。

参数:
when - 与该 Calendar 比较的 Calendar。
返回值:
如果当前时间在 Calendar when 的时间之前则为 true;否则为 false。
after
 public abstract boolean after(Object when)
比较时间域记录。 等价于比较转换到 UTC 的结果。

参数:
when - 与该 Calendar 比较的 Calendar。
返回值:
如果该日历的当前时间在 Calendar when 的时间之后则为 true;否则为 false。
add
 public abstract void add(int field,
                          int amount)
日期的计算功能。 按照日历的规则,将指定 ( 带符号的 ) 数量的时间添加到给定的时间域。 例如,从日历的当前时间减 5 ,可调用:

add(Calendar.DATE, -5)。

参数:
field - 时间域。
amount - 添加到该域的日期和时间的数量。
roll
 public abstract void roll(int field,
                           boolean up)
时间域滚动功能。 在给定的时间域上 ( 向上 / 向下 ) 滚动一个单个的时间单元。 例如,为了将当前日期向上滚动一天,可调用:

roll(Calendar.DATE, true)。 当在年或 Calendar.YEAR 域滚动时,年值将在 1 和调用 getMaximum(Calendar.YEAR) 的返回值之间滚动。 当在月或 Calendar.MONTH 域滚动时,其它的域,例如日期,可能会发生冲突需要改变。 例如,将日期 01/31/96 滚动一月结果是 03/02/96。 当在小时域或 Calendar.HOUR_OF_DAY 域滚动,小时值将在范围 0 到 23 之间滚动,它以 0 开始。

参数:
field - 时间域。
up - 指明指定时间域值向上还是向下滚动。 如果向上滚动用 true ,否则用 false。
setTimeZone
 public void setTimeZone(TimeZone value)
用给定的时区值设置时区。

参数:
value - 给定的时区。
getTimeZone
 public TimeZone getTimeZone()
获得时区。

返回值:
与日历相应的时区对象。
setLenient
 public void setLenient(boolean lenient)
指明对日期/时间的解释是否是宽松的。 在宽松的解释下,一个诸如 "February 942, 1996" 的日期将被看作与1996 年 2 月后的第 941 天等价。 在严格的解释下,这样的日期将引起抛出异常。

参见:
setLenient
isLenient
 public boolean isLenient()
指明对日期/时间的解释是否是宽松的。

setFirstDayOfWeek
 public void setFirstDayOfWeek(int value)
设置一周的第一天;例如在美国为 Sunday,在法国为 Monday。

参数:
value - 一周给定的第一天。
getFirstDayOfWeek
 public int getFirstDayOfWeek()
获得一周的第一天;例如在美国为 Sunday,在法国为 Monday。

返回值:
一周的第一天。
setMinimalDaysInFirstWeek
 public void setMinimalDaysInFirstWeek(int value)
设置该年中第一个星期所需要的最少的天数,例如,如果定义第一个星期包含一年第一个月的第一天,用值 1 调用该方法。如果它必须是一个完整的星期,使用 7 调用该方法。

参数:
value - 给定的一年中第一个星期要求的最少天数。
getMinimalDaysInFirstWeek
 public int getMinimalDaysInFirstWeek()
获得该年中第一个星期所需要的最少的天数,例如,如果第一个星期定义为包含一年第一个月的第一天,getMinimalDaysInFirstWeek 返回 1。如果要求的最少天数必须是一个完整的星期,getMinimalDaysInFirstWeek 返回 7。

返回值:
一年中第一个星期要求的最少天数。
getMinimum
 public abstract int getMinimum(int field)
获得给定时间域最小值。 例如对于格里高里 DAY_OF_MONTH 为 1。

参数:
field - 给定的时间域。
返回值:
给定时间域最小值。
getMaximum
 public abstract int getMaximum(int field)
获得给定时间域最大值。 例如对于 Gregorian DAY_OF_MONTH 为 31。

参数:
field - 给定的时间域。
返回值:
给定时间域最大值。
getGreatestMinimum
 public abstract int getGreatestMinimum(int field)
获得给定域变化时的最高的最小值。 否则与 getMinimum() 相同。对格里高里日历没有区别。

参数:
field - 给定的时间域。
返回值:
给定时间域最高的最小值。
getLeastMaximum
 public abstract int getLeastMaximum(int field)
获得给定域变化时的最低的最大值。 否则与 getMaximum() 相同。例如对于格里高里日历 DAY_OF_MONTH 为 28。

参数:
field - 给定的时间域。
返回值:
定时间域最低的最大值。
clone
 public Object clone()
覆盖 Cloneable

覆盖:
Object 中的 clone
toString
 public String toString()
返回日历的字符串表示。

返回值:
日历的字符串表示。
覆盖:
Object 中的 toString

当前位置 类层次 (JDK) 所有类 (JDK) 所有域和方法 (JDK)