模块 java.base
 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 类是一个抽象类,它提供了在特定时刻和一组 calendar fields 之间转换的方法,例如 YEARMONTHDAY_OF_MONTHHOUR 等,以及用于操作日历字段的方法,例如获取日期下个星期。即时时间可以用毫秒值表示,该值是从 Epoch 开始的偏移量,1970 年 1 月 1 日 00:00:00.000 GMT(公历)。

该类还提供了额外的字段和方法,用于在包外实现具体的日历系统。这些字段和方法定义为 protected

与其他locale敏感的类一样,Calendar 提供了一个类方法 getInstance ,用于获取此类型的普遍有用的对象。 CalendargetInstance 方法返回一个 Calendar 对象,其日历字段已用当前日期和时间初始化:

   Calendar rightNow = Calendar.getInstance();
 

Calendar 对象可以生成实现特定语言和日历样式(例如,日文-公历、日文-繁体)的日期时间格式所需的所有日历字段值。 Calendar 定义了某些日历字段返回的值的范围及其含义。例如,对于所有日历,日历系统的第一个月的值为 MONTH == JANUARY。其他值由具体子类定义,例如 ERA 。有关详细信息,请参阅各个字段文档和子类文档。

获取和设置日历字段值

可以通过调用 set 方法来设置日历字段值。 Calendar 中设置的任何字段值在需要计算其时间值(距纪元的毫秒数)或日历字段的值之前都不会被解释。调用 getgetTimeInMillisgetTimeaddroll 涉及这样的计算。

宽大

Calendar 有两种解释日历字段的模式,lenientnon-lenient。当 Calendar 处于宽松模式时,它接受比它产生的范围更广的日历字段值。当 Calendar 重新计算 get() 返回的日历字段值时,所有日历字段都被规范化。例如,宽松的 GregorianCalendarMONTH == JANUARYDAY_OF_MONTH == 32 解释为 2 月 1 日。

Calendar 处于非宽松模式时,如果其日历字段中存在任何不一致,它会抛出异常。例如,GregorianCalendar 始终生成介于 1 和月份长度之间的 DAY_OF_MONTH 值。如果设置了任何超出范围的字段值,则非宽松的 GregorianCalendar 在计算其时间或日历字段值时会抛出异常。

第一周

Calendar 使用两个参数定义特定于locale的七天一周:一周的第一天和第一周的最少天数(从 1 到 7)。当构造Calendar 时,这些数字取自locale资源数据或locale本身。如果指定的locale包含“fw”和/或“rg” Unicode 扩展 ,则将根据这些扩展名获取一周的第一天。如果同时指定了“fw”和“rg”,则“fw”扩展中的值将取代“rg”扩展中的隐式值。它们也可以通过设置它们的值的方法明确指定。

在设置或获取WEEK_OF_MONTHWEEK_OF_YEAR字段时,Calendar必须确定月份或年份的第一周作为参考点。一个月或一年的第一周定义为从 getFirstDayOfWeek() 开始并至少包含该月或一年的 getMinimalDaysInFirstWeek() 天的最早七天。编号为 ..., -1, 0 的周数在第一周之前;第 2 周、第 3 周……紧随其后。请注意,get() 返回的规范化编号可能不同。例如,特定的 Calendar 子类可以将一年中第 1 周之前的那一周指定为前一年的第 n 周。

日历字段分辨率

从日历字段中计算日期和时间时,可能计算的信息不足(例如只有年和月,没有日期),或者信息不一致(例如 Tuesday, July 15, 1996 (Gregorian) ) -- 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 中,一个字段的默认值与 Epoch 的开始相同:即 YEAR = 1970MONTH = JANUARYDAY_OF_MONTH = 1 等。

Note: 某些奇异时间的解释可能存在一定的歧义,通过以下方式解决:

  1. 23:59 是当天的最后一分钟,00:00 是第二天的第一分钟。因此,1999 年 12 月 31 日 23:59 < 2000 年 1 月 1 日 00:00 < 2000 年 1 月 1 日 00:01。
  2. 虽然历史上并不准确,但午夜也属于“am”,中午属于“pm”,所以在同一天,12:00 am(午夜)< 12:01 am,12:00 pm(中午)< 12 :01 点

日期或时间格式字符串不是日历定义的一部分,因为它们必须可以在运行时由用户修改或覆盖。使用 DateFormat 格式化日期。

字段操作

可以使用三种方法更改日历字段:set()add()roll()

set(f, value) 将日历字段 f 更改为 value。此外,它设置了一个内部成员变量来指示日历字段f 已被更改。尽管日历字段 f 会立即更改,但直到下一次调用 get()getTime()getTimeInMillis()add()roll() 时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调用 set() 不会触发多次不必要的计算。作为使用 set() 更改日历字段的结果,其他日历字段也可能更改,具体取决于日历字段、日历字段值和日历系统。此外,在重新计算日历字段后,get(f) 不一定会返回通过调用 set 方法设置的 value。具体由具体的日历类决定。

Example:考虑最初设置为 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) 进行了两次调整:

Add rule 1。调用后字段 f 的值减去调用前字段 f 的值是 delta,对字段 f 中发生的任何溢出取模。当字段值超出其范围时会发生溢出,因此,下一个较大的字段会递增或递减,并且字段值会调整回其范围内。

Add rule 2。如果期望一个较小的字段是不变的,但由于字段f更改后其最小值或最大值发生变化或其他约束(例如时区偏移量更改)而使其不可能等于其先前值,则其值调整到尽可能接近其预期值。较小的字段代表较小的时间单位。 HOUR 是比 DAY_OF_MONTH 更小的字段。不对预计不会不变的较小字段进行任何调整。日历系统确定哪些字段应该是不变的。

此外,与 set() 不同,add() 强制立即重新计算日历的毫秒数和所有字段。

Example:考虑最初设置为 1999 年 8 月 31 日的 GregorianCalendar。调用 add(Calendar.MONTH, 13) 将日历设置为 2000 年 9 月 30 日。Add rule 1MONTH 字段设置为 9 月,因为将 13 个月加到 8 月得到下一年的 9 月。由于 DAY_OF_MONTH 在 9 月的 GregorianCalendar 中不能为 31,因此 add rule 2DAY_OF_MONTH 设置为 30,这是最接近的可能值。虽然它是一个较小的字段,但 DAY_OF_WEEK 不会根据规则 2 进行调整,因为它预计会在 GregorianCalendar 中的月份更改时更改。

roll(f, delta) delta 添加到字段 f 而不更改更大的字段。这相当于通过以下调整调用 add(f, delta)

Roll rule。较大的字段在调用后保持不变。更大的字段代表更大的时间单位。 DAY_OF_MONTH 是一个比 HOUR 更大的字段。

Example:参见 GregorianCalendar.roll(int, int)

Usage model。为了激励 add()roll() 的行为,请考虑一个用户界面组件,其中包含月、日和年的递增和递减按钮,以及一个底层 GregorianCalendar。如果界面显示为 1999 年 1 月 31 日并且用户按下月份递增按钮,它应该显示什么?如果底层实现使用 set() ,它可能读取 1999 年 3 月 3 日。更好的结果是 1999 年 2 月 28 日。此外,如果用户再次按下月份增量按钮,它应该读取 1999 年 3 月 31 日,而不是 1999 年 3 月 28 日. 通过保存原始日期并使用 add()roll() ,根据是否应影响更大的字段,用户界面可以按照大多数用户的直觉预期运行。

自从:
1.1
参见:
  • 内部类总结

    内部类
    修饰符和类型
    描述
    static class 
    Calendar.Builder 用于根据各种日期时间参数创建 Calendar
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    static final int
    getDisplayNames 的样式说明符,指示所有样式的名称,例如“January”和“Jan”。
    static final int
    AM_PM 字段的值表示一天中从午夜到中午之前的时间段。
    static final int
    getset 的字段编号指示 HOUR 是在中午之前还是之后。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第四个月。
    protected boolean
    如果 fields[] 与当前设置的时间同步则为真。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第八个月。
    static final int
    getset 的字段编号指示月份中的日期。
    static final int
    getset 的字段编号指示月份中的日期。
    static final int
    getset 的字段编号表示星期几。
    static final int
    getset 的字段编号指示当前月份中星期几的序号。
    static final int
    getset 的字段编号表示当年的天数。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第十二个月。
    static final int
    getset 的字段编号指示以毫秒为单位的夏令时偏移量。
    static final int
    getset 的字段编号表示纪元,例如儒略历中的 AD 或 BC。
    static final int
    MONTH 字段的值指示公历和儒略历中一年中的第二个月。
    static final int
    getset 识别的不同字段的数量。
    protected int[]
    此日历当前设置时间的日历字段值。
    static final int
    指示星期五的 DAY_OF_WEEK 字段的值。
    static final int
    getset 的字段编号指示上午或下午的时间。
    static final int
    getset 的字段编号指示一天中的小时数。
    protected boolean[]
    指示是否设置了日历的指定日历字段的标志。
    protected boolean
    如果 time 的值有效则为真。
    static final int
    MONTH 字段的值表示公历和儒略历中一年的第一个月。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第七个月。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第六个月。
    static final int
    getDisplayName getDisplayNames 的样式说明符相当于 LONG_FORMAT
    static final int
    getDisplayName getDisplayNames 的样式说明符指示用于格式的长名称。
    static final int
    getDisplayName getDisplayNames 的样式说明符,指示独立使用的长名称,例如作为日历标题的月份名称。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第三个月。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第五个月。
    static final int
    getset 的字段编号表示秒内的毫秒数。
    static final int
    getset 的字段编号表示小时内的分钟。
    static final int
    DAY_OF_WEEK 字段的值指示星期一。
    static final int
    getset 的字段编号表示月份。
    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
    getset 的字段编号表示分钟内的秒数。
    static final int
    MONTH 字段的值表示公历和儒略历中一年中的第九个月。
    static final int
    getDisplayName getDisplayNames 的样式说明符等同于 SHORT_FORMAT
    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:00:00 GMT 之后的毫秒数表示。
    static final int
    指示星期二的 DAY_OF_WEEK 字段的值。
    static final int
    MONTH 字段的值表示一年中的第十三个月。
    static final int
    指示星期三的 DAY_OF_WEEK 字段的值。
    static final int
    getset 的字段编号表示当月的周数。
    static final int
    getset 的字段编号表示当年的周数。
    static final int
    getset 的字段编号表示年份。
    static final int
    getset 的字段编号表示与 GMT 的原始偏移量(以毫秒为单位)。
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    构造具有默认时区和默认 FORMAT locale的 Calendar。
    protected
    Calendar(TimeZone zone, Locale aLocale)
    构造具有指定时区和locale的日历。
  • 方法总结

    修饰符和类型
    方法
    描述
    abstract void
    add(int field, int amount)
    根据日历的规则向给定的日历字段添加或减去指定的时间量。
    boolean
    after(Object when)
    返回此 Calendar 是否表示指定 Object 表示的时间之后的时间。
    boolean
    before(Object when)
    返回此 Calendar 是否表示指定 Object 表示的时间之前的时间。
    final void
    将此 Calendar 的所有日历字段值和时间值(与 时代 的毫秒偏移量)设置为未定义。
    final void
    clear(int field)
    设置此 Calendar 未定义的给定日历字段值和时间值(与 时代 的毫秒偏移量)。
    创建并返回此对象的副本。
    int
    compareTo(Calendar anotherCalendar)
    比较由两个 Calendar 对象表示的时间值(与 时代 的毫秒偏移量)。
    protected void
    填写日历字段中任何未设置的字段。
    protected abstract void
    将当前毫秒时间值 time 转换为 fields[] 中的日历字段值。
    protected abstract void
    fields[] 中的当前日历字段值转换为毫秒时间值 time
    boolean
    equals(Object obj)
    将此 Calendar 与指定的 Object 进行比较。
    int
    get(int field)
    返回给定日历字段的值。
    int
    getActualMaximum(int field)
    给定此 Calendar 的时间值,返回指定日历字段可能具有的最大值。
    int
    getActualMinimum(int field)
    给定此 Calendar 的时间值,返回指定日历字段可能具有的最小值。
    static Set<String>
    返回一个不可修改的 Set,其中包含运行时环境中 Calendar 支持的所有日历类型。
    static Locale[]
    返回一个包含所有locale的数组,此类的 getInstance 方法可以为其返回本地化实例。
    返回此 Calendar 的日历类型。
    getDisplayName(int field, int style, Locale locale)
    返回给定 stylelocale 中日历 field 值的字符串表示形式。
    getDisplayNames(int field, int style, Locale locale)
    返回一个 Map,其中包含给定 stylelocale 中日历 field 的所有名称及其对应的字段值。
    int
    获取一周的第一天是什么;例如,SUNDAY 在美国,MONDAY 在法国。
    abstract int
    getGreatestMinimum(int field)
    返回此 Calendar 实例的给定日历字段的最高最小值。
    static Calendar
    使用默认时区和locale获取日历。
    static Calendar
    getInstance(Locale aLocale)
    获取使用默认时区和指定locale的日历。
    static Calendar
    获取使用指定时区和默认locale的日历。
    static Calendar
    getInstance(TimeZone zone, Locale aLocale)
    获取具有指定时区和locale的日历。
    abstract int
    getLeastMaximum(int field)
    返回此 Calendar 实例的给定日历字段的最小最大值。
    abstract int
    getMaximum(int field)
    返回此 Calendar 实例的给定日历字段的最大值。
    int
    获取一年中第一周所需的最少天数;例如,如果将第一周定义为一年中第一个月的第一天,则此方法返回 1。
    abstract int
    getMinimum(int field)
    返回此 Calendar 实例的给定日历字段的最小值。
    final Date
    返回表示此 Calendar 的时间值的 Date 对象(与 时代 的毫秒偏移量)。
    long
    以毫秒为单位返回此日历的时间值。
    获取时区。
    int
    返回此 Calendar 表示的周年中的周数。
    int
    返回由此 Calendar 表示的星期年。
    int
    返回此日历的哈希码。
    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)
    设置日历字段 YEARMONTHDAY_OF_MONTH 的值。
    final void
    set(int year, int month, int date, int hourOfDay, int minute)
    设置日历字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTE 的值。
    final void
    set(int year, int month, int date, int hourOfDay, int minute, int second)
    设置字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTESECOND 的值。
    void
    setFirstDayOfWeek(int value)
    设置一周的第一天是什么;例如,SUNDAY 在美国,MONDAY 在法国。
    void
    setLenient(boolean lenient)
    指定日期/时间解释是否宽松。
    void
    设置一年中第一周所需的最少天数;例如,如果将第一周定义为包含一年中第一个月的第一天的一周,则使用值 1 调用此方法。
    final void
    setTime(Date date)
    使用给定的 Date 设置此日历的时间。
    void
    setTimeInMillis(long millis)
    根据给定的 long 值设置此 Calendar 的当前时间。
    void
    使用给定的时区值设置时区。
    void
    setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
    使用给定的日期说明符设置此 Calendar 的日期 - 年周、年中周和星期几。
    final Instant
    将此对象转换为 Instant
    返回此日历的字符串表示形式。

    在类 java.lang.Object 中声明的方法

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • 字段详细信息

    • ERA

      public static final int ERA
      getset 的字段编号表示纪元,例如儒略历中的 AD 或 BC。这是一个特定于日历的值;请参阅子类文档。
      参见:
    • YEAR

      public static final int YEAR
      getset 的字段编号表示年份。这是一个特定于日历的值;请参阅子类文档。
      参见:
    • MONTH

      public static final int MONTH
      getset 的字段编号表示月份。这是特定于日历的值。在公历和儒略历中,一年的第一个月是JANUARY,即 0;最后一个取决于一年中的月数。
      参见:
    • WEEK_OF_YEAR

      public static final int WEEK_OF_YEAR
      getset 的字段编号表示当年的周数。一年中的第一周,由 getFirstDayOfWeek()getMinimalDaysInFirstWeek() 定义,值为 1。子类定义一年中第一周之前的天数 WEEK_OF_YEAR 的值。
      参见:
    • WEEK_OF_MONTH

      public static final int WEEK_OF_MONTH
      getset 的字段编号表示当月的周数。 getFirstDayOfWeek()getMinimalDaysInFirstWeek() 定义的月份的第一周的值为 1。子类定义月份第一周之前的天数 WEEK_OF_MONTH 的值。
      参见:
    • DATE

      public static final int DATE
      getset 的字段编号指示月份中的日期。这是 DAY_OF_MONTH 的同义词。该月的第一天的值为 1。
      参见:
    • DAY_OF_MONTH

      public static final int DAY_OF_MONTH
      getset 的字段编号指示月份中的日期。这是 DATE 的同义词。该月的第一天的值为 1。
      参见:
    • DAY_OF_YEAR

      public static final int DAY_OF_YEAR
      getset 的字段编号表示当年的天数。一年的第一天的值为 1。
      参见:
    • DAY_OF_WEEK

      public static final int DAY_OF_WEEK
      getset 的字段编号表示星期几。此字段采用值 SUNDAYMONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAY
      参见:
    • DAY_OF_WEEK_IN_MONTH

      public static final int DAY_OF_WEEK_IN_MONTH
      getset 的字段编号指示当前月份中星期几的序号。与 DAY_OF_WEEK 字段一起,这唯一地指定了一个月中的一天。与 WEEK_OF_MONTHWEEK_OF_YEAR 不同,此字段的值确实 not 取决于 getFirstDayOfWeek()getMinimalDaysInFirstWeek()DAY_OF_MONTH 17 总是对应于 DAY_OF_WEEK_IN_MONTH 1814 对应于 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 54 的结尾。
      参见:
    • AM_PM

      public static final int AM_PM
      getset 的字段编号指示 HOUR 是在中午之前还是之后。例如,在晚上 10:04:15.250,AM_PMPM
      参见:
    • HOUR

      public static final int HOUR
      getset 的字段编号指示上午或下午的时间。 HOUR 用于 12 小时制 (0 - 11)。中午和午夜用 0 表示,而不是 12。例如,在晚上 10:04:15.250,HOUR 为 10。
      参见:
    • HOUR_OF_DAY

      public static final int HOUR_OF_DAY
      getset 的字段编号指示一天中的小时数。 HOUR_OF_DAY 用于 24 小时制。例如,在晚上 10:04:15.250,HOUR_OF_DAY 为 22。
      参见:
    • MINUTE

      public static final int MINUTE
      getset 的字段编号表示小时内的分钟。例如,在晚上 10:04:15.250,MINUTE 为 4。
      参见:
    • SECOND

      public static final int SECOND
      getset 的字段编号表示分钟内的秒数。例如,在晚上 10:04:15.250,SECOND 为 15。
      参见:
    • MILLISECOND

      public static final int MILLISECOND
      getset 的字段编号表示秒内的毫秒数。例如,在晚上 10:04:15.250,MILLISECOND 为 250。
      参见:
    • ZONE_OFFSET

      public static final int ZONE_OFFSET
      getset 的字段编号表示与 GMT 的原始偏移量(以毫秒为单位)。

      如果 TimeZone 实现子类支持历史 GMT 偏移更改,则此字段反映此 Calendar 时区的正确 GMT 偏移值。

      参见:
    • DST_OFFSET

      public static final int DST_OFFSET
      getset 的字段编号指示以毫秒为单位的夏令时偏移量。

      如果 TimeZone 实现子类支持历史夏令时时间表更改,则此字段反映此 Calendar 时区的正确夏令时偏移值。

      参见:
    • FIELD_COUNT

      public static final int FIELD_COUNT
      getset 识别的不同字段的数量。字段编号范围从 0..FIELD_COUNT-1
      参见:
    • SUNDAY

      public static final int SUNDAY
      指示星期日的 DAY_OF_WEEK 字段的值。
      参见:
    • MONDAY

      public static final int MONDAY
      DAY_OF_WEEK 字段的值指示星期一。
      参见:
    • TUESDAY

      public static final int TUESDAY
      指示星期二的 DAY_OF_WEEK 字段的值。
      参见:
    • WEDNESDAY

      public static final int WEDNESDAY
      指示星期三的 DAY_OF_WEEK 字段的值。
      参见:
    • THURSDAY

      public static final int THURSDAY
      指示星期四的 DAY_OF_WEEK 字段的值。
      参见:
    • FRIDAY

      public static final int FRIDAY
      指示星期五的 DAY_OF_WEEK 字段的值。
      参见:
    • SATURDAY

      public static final int SATURDAY
      DAY_OF_WEEK 字段的值表示星期六。
      参见:
    • JANUARY

      public static final int JANUARY
      MONTH 字段的值表示公历和儒略历中一年的第一个月。
      参见:
    • FEBRUARY

      public static final int FEBRUARY
      MONTH 字段的值指示公历和儒略历中一年中的第二个月。
      参见:
    • MARCH

      public static final int MARCH
      MONTH 字段的值表示公历和儒略历中一年中的第三个月。
      参见:
    • APRIL

      public static final int APRIL
      MONTH 字段的值表示公历和儒略历中一年中的第四个月。
      参见:
    • MAY

      public static final int MAY
      MONTH 字段的值表示公历和儒略历中一年中的第五个月。
      参见:
    • JUNE

      public static final int JUNE
      MONTH 字段的值表示公历和儒略历中一年中的第六个月。
      参见:
    • JULY

      public static final int JULY
      MONTH 字段的值表示公历和儒略历中一年中的第七个月。
      参见:
    • AUGUST

      public static final int AUGUST
      MONTH 字段的值表示公历和儒略历中一年中的第八个月。
      参见:
    • SEPTEMBER

      public static final int SEPTEMBER
      MONTH 字段的值表示公历和儒略历中一年中的第九个月。
      参见:
    • OCTOBER

      public static final int OCTOBER
      MONTH 字段的值表示公历和儒略历中一年中的第十个月。
      参见:
    • NOVEMBER

      public static final int NOVEMBER
      MONTH 字段的值表示公历和儒略历中一年中的第十一个月。
      参见:
    • DECEMBER

      public static final int DECEMBER
      MONTH 字段的值表示公历和儒略历中一年中的第十二个月。
      参见:
    • UNDECIMBER

      public static final int UNDECIMBER
      MONTH 字段的值表示一年中的第十三个月。虽然 GregorianCalendar 不使用此值,但农历使用。
      参见:
    • AM

      public static final int AM
      AM_PM 字段的值表示一天中从午夜到中午之前的时间段。
      参见:
    • PM

      public static final int PM
      AM_PM 字段的值表示一天中从中午到午夜之前的时间段。
      参见:
    • ALL_STYLES

      public static final int ALL_STYLES
      getDisplayNames 的样式说明符,指示所有样式的名称,例如“January”和“Jan”。
      自从:
      1.6
      参见:
    • SHORT

      public static final int SHORT
      getDisplayName getDisplayNames 的样式说明符等同于 SHORT_FORMAT
      自从:
      1.6
      参见:
    • LONG

      public static final int LONG
      getDisplayName getDisplayNames 的样式说明符相当于 LONG_FORMAT
      自从:
      1.6
      参见:
    • NARROW_FORMAT

      public static final int NARROW_FORMAT
      getDisplayName getDisplayNames 的样式说明符指示用于格式的窄名称。窄名称通常是单个字符串,例如“M”代表星期一。
      自从:
      1.8
      参见:
    • NARROW_STANDALONE

      public static final int NARROW_STANDALONE
      getDisplayName getDisplayNames 的样式说明符独立指示窄名称。窄名称通常是单个字符串,例如“M”代表星期一。
      自从:
      1.8
      参见:
    • SHORT_FORMAT

      public static final int SHORT_FORMAT
      getDisplayName getDisplayNames 的样式说明符指示用于格式的短名称。
      自从:
      1.8
      参见:
    • LONG_FORMAT

      public static final int LONG_FORMAT
      getDisplayName getDisplayNames 的样式说明符指示用于格式的长名称。
      自从:
      1.8
      参见:
    • SHORT_STANDALONE

      public static final int SHORT_STANDALONE
      getDisplayName getDisplayNames 的样式说明符,指示独立使用的短名称,例如作为日历标题的月份缩写。
      自从:
      1.8
      参见:
    • LONG_STANDALONE

      public static final int LONG_STANDALONE
      getDisplayName getDisplayNames 的样式说明符,指示独立使用的长名称,例如作为日历标题的月份名称。
      自从:
      1.8
      参见:
    • fields

      protected int[] fields
      此日历当前设置时间的日历字段值。这是一个 FIELD_COUNT 整数数组,索引值为 ERADST_OFFSET
    • isSet

      protected boolean[] isSet
      指示是否设置了日历的指定日历字段的标志。新对象没有设置字段。在第一次调用生成字段的方法后,它们都保持设置状态。这是一个 FIELD_COUNT 布尔数组,索引值为 ERADST_OFFSET
    • time

      protected long time
      此日历的当前设置时间,以 1970 年 1 月 1 日 0:00:00 GMT 之后的毫秒数表示。
      参见:
    • isTimeSet

      protected boolean isTimeSet
      如果 time 的值有效则为真。 field[] 的一项更改使时间无效。
      参见:
    • areFieldsSet

      protected boolean areFieldsSet
      如果 fields[] 与当前设置的时间同步则为真。如果为 false,则下一次获取字段值的尝试将强制根据 time 的当前值重新计算所有字段。
  • 构造方法详细信息

    • Calendar

      protected Calendar()
      构造具有默认时区和默认 FORMAT locale的 Calendar。
      参见:
    • Calendar

      protected Calendar(TimeZone  zone, Locale  aLocale)
      构造具有指定时区和locale的日历。
      参数:
      zone - 使用的时区
      aLocale - 周数据的locale
  • 方法详情

    • getInstance

      public static Calendar  getInstance()
      使用默认时区和locale获取日历。返回的 Calendar 基于具有默认 FORMAT 区域设置的默认时区中的当前时间。

      如果locale包含带“tz” Unicode 扩展 的时区,则改用该时区。

      返回:
      日历。
    • getInstance

      public static Calendar  getInstance(TimeZone  zone)
      获取使用指定时区和默认locale的日历。返回的 Calendar 基于具有默认 FORMAT 区域设置的给定时区中的当前时间。
      参数:
      zone - 使用的时区
      返回:
      日历。
    • getInstance

      public static Calendar  getInstance(Locale  aLocale)
      获取使用默认时区和指定locale的日历。返回的 Calendar 基于给定区域设置的默认时区中的当前时间。

      如果locale包含带“tz” Unicode 扩展 的时区,则改用该时区。

      参数:
      aLocale - 周数据的locale
      返回:
      日历。
    • getInstance

      public static Calendar  getInstance(TimeZone  zone, Locale  aLocale)
      获取具有指定时区和locale的日历。返回的 Calendar 基于给定区域设置的给定时区中的当前时间。
      参数:
      zone - 使用的时区
      aLocale - 周数据的locale
      返回:
      日历。
    • getAvailableLocales

      public static Locale [] getAvailableLocales()
      返回一个包含所有locale的数组,此类的 getInstance 方法可以为其返回本地化实例。至少,返回的数组必须包含一个等于 Locale.ROOT Locale 实例和一个等于 Locale.US Locale 实例。
      返回:
      本地化 Calendar 实例可用的区域设置数组。
    • computeTime

      protected abstract void computeTime()
      fields[] 中的当前日历字段值转换为毫秒时间值 time
      参见:
    • computeFields

      protected abstract void computeFields()
      将当前毫秒时间值 time 转换为 fields[] 中的日历字段值。这允许您将日历字段值与为日历设置的新时间同步。 not先重新计算时间;要重新计算时间,然后是字段,请调用 complete() 方法。
      参见:
    • getTime

      public final Date  getTime()
      返回表示此 Calendar 的时间值的 Date 对象(与 时代 的毫秒偏移量)。
      返回:
      Date 表示时间值。
      参见:
    • setTime

      public final void setTime(Date  date)
      使用给定的 Date 设置此日历的时间。

      注意:使用 Date(Long.MAX_VALUE)Date(Long.MIN_VALUE) 调用 setTime() 可能会从 get() 产生不正确的字段值。

      参数:
      date - 给定的日期。
      抛出:
      NullPointerException - 如果 datenull
      参见:
    • getTimeInMillis

      public long getTimeInMillis()
      以毫秒为单位返回此日历的时间值。
      返回:
      当前时间作为距纪元的 UTC 毫秒数。
      参见:
    • setTimeInMillis

      public void setTimeInMillis(long millis)
      根据给定的 long 值设置此 Calendar 的当前时间。
      参数:
      millis - 从纪元算起的以 UTC 毫秒为单位的新时间。
      参见:
    • get

      public int get(int field)
      返回给定日历字段的值。在宽松模式下,所有日历字段都被规范化。在非宽松模式下,所有日历字段都经过验证,如果任何日历字段的值超出范围,此方法将引发异常。规范化和验证由 complete() 方法处理,该过程依赖于日历系统。
      参数:
      field - 给定的日历字段。
      返回:
      给定日历字段的值。
      抛出:
      ArrayIndexOutOfBoundsException - 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT)。
      参见:
    • internalGet

      protected final int internalGet(int field)
      返回给定日历字段的值。此方法不涉及字段值的规范化或验证。
      参数:
      field - 给定的日历字段。
      返回:
      给定日历字段的值。
      参见:
    • set

      public void set(int field, int value)
      将给定的日历字段设置为给定的值。无论宽大模式如何,此方法都不会解释该值。
      参数:
      field - 给定的日历字段。
      value - 要为给定日历字段设置的值。
      抛出:
      ArrayIndexOutOfBoundsException - 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT)。在非宽松模式下。
      参见:
    • set

      public final void set(int year, int month, int date)
      设置日历字段 YEARMONTHDAY_OF_MONTH 的值。保留其他日历字段的先前值。如果不需要,请先致电 clear()
      参数:
      year - 用于设置 YEAR 日历字段的值。
      month - 用于设置 MONTH 日历字段的值。月份值从 0 开始。例如,0 表示一月。
      date - 用于设置 DAY_OF_MONTH 日历字段的值。
      参见:
    • set

      public final void set(int year, int month, int date, int hourOfDay, int minute)
      设置日历字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTE 的值。保留其他字段的先前值。如果不需要,请先致电 clear()
      参数:
      year - 用于设置 YEAR 日历字段的值。
      month - 用于设置 MONTH 日历字段的值。月份值从 0 开始。例如,0 表示一月。
      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)
      设置字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTESECOND 的值。保留其他字段的先前值。如果不需要,请先致电 clear()
      参数:
      year - 用于设置 YEAR 日历字段的值。
      month - 用于设置 MONTH 日历字段的值。月份值从 0 开始。例如,0 表示一月。
      date - 用于设置 DAY_OF_MONTH 日历字段的值。
      hourOfDay - 用于设置 HOUR_OF_DAY 日历字段的值。
      minute - 用于设置 MINUTE 日历字段的值。
      second - 用于设置 SECOND 日历字段的值。
      参见:
    • clear

      public final void clear()
      将此 Calendar 的所有日历字段值和时间值(与 时代 的毫秒偏移量)设置为未定义。这意味着 isSet() 将为所有日历字段返回 false,并且日期和时间计算会将这些字段视为从未设置过。 Calendar 实现类可以使用其特定的默认字段值进行日期/时间计算。例如,如果 YEAR 字段值未定义,则 GregorianCalendar 使用 1970。
      参见:
    • 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 - 要清除的日历字段。
      参见:
    • isSet

      public final boolean isSet(int field)
      确定给定的日历字段是否设置了值,包括值已由 get 方法调用触发的内部字段计算设置的情况。
      参数:
      field - 要测试的日历字段
      返回:
      true 如果给定的日历字段设置了值; false否则。
    • getDisplayName

      public String  getDisplayName(int field, int style, Locale  locale)
      返回给定 stylelocale 中日历 field 值的字符串表示形式。如果没有适用的字符串表示,则返回 null。如果字符串表示适用于给定日历 field,则此方法调用 get(field) 以获取日历 field 值。

      例如,如果这个 Calendar 是一个 GregorianCalendar 并且它的日期是 2005-01-01,那么 MONTH 字段的字符串表示形式在英语locale中的长格式为“January”或短格式为“Jan”。但是,没有字符串表示形式可用于 DAY_OF_MONTH 字段,并且此方法将返回 null

      默认实现支持 DateFormatSymbols 在给定 locale 中具有名称的日历字段。

      参数:
      field - 返回字符串表示的日历字段
      style - 应用于字符串表示的样式; SHORT_FORMAT (SHORT )、SHORT_STANDALONE LONG_FORMAT (LONG )、LONG_STANDALONE NARROW_FORMAT NARROW_STANDALONE 之一。
      locale - 字符串表示的locale(忽略 locale 指定的任何日历类型)
      返回:
      给定 field 在给定 style 中的字符串表示,如果没有适用的字符串表示,则为 null
      抛出:
      IllegalArgumentException - 如果 fieldstyle 无效,或者如果此 Calendar 不宽松且任何日历字段具有无效值
      NullPointerException - 如果 locale 为空
      自从:
      1.6
    • getDisplayNames

      public Map <String ,Integer > getDisplayNames(int field, int style, Locale  locale)
      返回一个 Map,其中包含给定 stylelocale 中日历 field 的所有名称及其对应的字段值。例如,如果此 CalendarGregorianCalendar ,则返回的映射将包含“Jan”到 JANUARY 、“Feb”到 FEBRUARY 等等,在英语locale中采用 short 样式。

      由于使用单个字符,例如星期日和星期六的“S”,窄名称可能不是唯一的。在这种情况下,返回的 Map 中不包含窄名称。

      可以考虑其他日历字段的值来确定一组显示名称。例如,如果此 Calendar 是阴阳历系统并且 YEAR 字段给出的年份值有闰月,则此方法将返回包含闰月名称的月份名称,并将月份名称映射到它们特定于年份的值。

      默认实现支持包含在 DateFormatSymbols 中的显示名称。例如,如果 fieldMONTH styleALL_STYLES ,则此方法返回一个 Map 包含 DateFormatSymbols.getShortMonths() DateFormatSymbols.getMonths() 返回的所有字符串。

      参数:
      field - 返回显示名称的日历字段
      style - 应用于字符串表示的样式; SHORT_FORMAT (SHORT )、SHORT_STANDALONE LONG_FORMAT (LONG )、LONG_STANDALONE NARROW_FORMAT NARROW_STANDALONE 之一
      locale - 显示名称的locale
      返回:
      Map 包含 stylelocale 中的所有显示名称及其字段值,或者 null 如果没有为 field 定义显示名称
      抛出:
      IllegalArgumentException - 如果 fieldstyle 无效,或者如果此 Calendar 不宽松且任何日历字段具有无效值
      NullPointerException - 如果 locale 为空
      自从:
      1.6
    • complete

      protected void complete()
      填写日历字段中任何未设置的字段。首先,如果时间值(与 时代 的毫秒偏移量)尚未根据日历字段值计算,则调用 computeTime() 方法。然后调用computeFields() 方法计算所有日历字段值。
    • getAvailableCalendarTypes

      public static Set <String > getAvailableCalendarTypes()
      返回一个不可修改的 Set,其中包含运行时环境中 Calendar 支持的所有日历类型。可用的日历类型可用于 Unicode locale扩展 。返回的 Set 至少包含 "gregory" 。日历类型不包括别名,例如 "gregorian""gregory"
      返回:
      包含所有可用日历类型的不可修改的Set
      自从:
      1.8
      参见:
    • getCalendarType

      public String  getCalendarType()
      返回此 Calendar 的日历类型。日历类型由 Unicode Locale Data Markup Language (LDML) 规范定义。

      此方法的默认实现返回此 Calendar 实例的类名。任何实现 LDML 定义的日历系统的子类都应该覆盖此方法以返回适当的日历类型。

      返回:
      LDML 定义的日历类型或此 Calendar 实例的类名
      自从:
      1.8
      参见:
    • equals

      public boolean equals(Object  obj)
      将此 Calendar 与指定的 Object 进行比较。结果是 true 当且仅当参数是同一日历系统的 Calendar 对象,该对象在与该对象相同的 Calendar 参数下表示相同的时间值(与 时代 的毫秒偏移量)。

      Calendar 参数是由 isLenientgetFirstDayOfWeekgetMinimalDaysInFirstWeekgetTimeZone 方法表示的值。如果两个 Calendar 之间的那些参数有任何差异,则此方法返回 false

      使用 compareTo 方法仅比较时间值。

      重写:
      equals 在类 Object
      参数:
      obj - 要与之比较的对象。
      返回:
      true 如果此对象等于 objfalse否则。
      参见:
    • hashCode

      public int hashCode()
      返回此日历的哈希码。
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      自从:
      1.2
      参见:
    • before

      public boolean before(Object  when)
      返回此 Calendar 是否表示指定 Object 表示的时间之前的时间。此方法等效于:
      
           compareTo(when) < 0
        
      当且仅当 when 是一个 Calendar 实例。否则,该方法返回 false
      参数:
      when - 要比较的 Object
      返回:
      true 如果这个 Calendar 的时间早于 when 代表的时间; false否则。
      参见:
    • after

      public boolean after(Object  when)
      返回此 Calendar 是否表示指定 Object 表示的时间之后的时间。此方法等效于:
      
           compareTo(when) > 0
        
      当且仅当 when 是一个 Calendar 实例。否则,该方法返回 false
      参数:
      when - 要比较的 Object
      返回:
      true 如果这个 Calendar 的时间在 when 代表的时间之后; false否则。
      参见:
    • compareTo

      public int compareTo(Calendar  anotherCalendar)
      比较由两个 Calendar 对象表示的时间值(与 时代 的毫秒偏移量)。
      指定者:
      compareTo 在接口 Comparable<Calendar>
      参数:
      anotherCalendar - 要比较的 Calendar
      返回:
      如果参数表示的时间等于此 Calendar 表示的时间,则值为 0;如果此 Calendar 的时间早于参数表示的时间,则该值小于 0;如果此 Calendar 的时间晚于参数表示的时间,则该值大于 0
      抛出:
      NullPointerException - 如果指定的 Calendarnull
      IllegalArgumentException - 如果由于任何无效的日历值而无法获取指定的 Calendar 对象的时间值。
      自从:
      1.5
    • add

      public abstract void add(int field, int amount)
      根据日历的规则向给定的日历字段添加或减去指定的时间量。例如,要从日历的当前时间减去 5 天,可以通过调用来实现:

      add(Calendar.DAY_OF_MONTH, -5) .

      参数:
      field - 日历字段。
      amount - 要添加到字段的日期或时间量。
      参见:
    • roll

      public abstract void roll(int field, boolean up)
      在给定时间字段上添加或减去(向上/向下)单个时间单位而不更改更大的字段。例如,要将当前日期向上滚动一天,您可以通过调用来实现:

      滚动(日历。日期,真)。在年份或 Calendar.YEAR 字段上滚动时,它将在 1 和调用 getMaximum(Calendar.YEAR) 返回的值之间的范围内滚动年份值。在月份或 Calendar.MONTH 字段上滚动时,日期等其他字段可能会发生冲突,需要更改。例如,在日期 01/31/96 滚动月份将导致 02/29/96。在 hour-in-day 或 Calendar.HOUR_OF_DAY 字段上滚动时,它将在 0 到 23 之间的范围内滚动小时值,这是从零开始的。

      参数:
      field - 时间字段。
      up - 指示指定时间字段的值是向上滚动还是向下滚动。如果卷起则使用 true,否则使用 false。
      参见:
    • roll

      public void roll(int field, int amount)
      将指定的(带符号的)金额添加到指定的日历字段而不更改更大的字段。负数表示向下滚动。

      注意:Calendar 上的默认实现只是重复调用滚动一个单位的 roll() 版本。这可能并不总是做正确的事。例如,如果 DAY_OF_MONTH 字段为 31,则滚动到 2 月会将其设置为 28。此函数的 GregorianCalendar 版本会解决此问题。其他子类也应该提供这个函数的重写来做正确的事情。

      参数:
      field - 日历字段。
      amount - 添加到日历 field 的已签名金额。
      自从:
      1.2
      参见:
    • setTimeZone

      public void setTimeZone(TimeZone  value)
      使用给定的时区值设置时区。
      参数:
      value - 给定的时区。
    • getTimeZone

      public TimeZone  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)
      设置一周的第一天是什么;例如,SUNDAY 在美国,MONDAY 在法国。
      参数:
      value - 给定的一周的第一天。
      参见:
    • getFirstDayOfWeek

      public int getFirstDayOfWeek()
      获取一周的第一天是什么;例如,SUNDAY 在美国,MONDAY 在法国。
      返回:
      一周的第一天。
      参见:
    • setMinimalDaysInFirstWeek

      public void setMinimalDaysInFirstWeek(int value)
      设置一年中第一周所需的最少天数;例如,如果将第一周定义为包含一年第一个月的第一天的一周,则使用值 1 调用此方法。如果必须是整周,则使用值 7。
      参数:
      value - 一年中第一周所需的给定最少天数。
      参见:
    • getMinimalDaysInFirstWeek

      public int getMinimalDaysInFirstWeek()
      获取一年中第一周所需的最少天数;例如,如果第一周定义为包含一年第一个月的第一天的一周,则此方法返回 1。如果所需的最少天数必须是整周,则此方法返回 7。
      返回:
      一年中第一周所需的最少天数。
      参见:
    • isWeekDateSupported

      public boolean isWeekDateSupported()
      返回此 Calendar 是否支持周日期。

      此方法的默认实现返回 false

      返回:
      true 如果这个 Calendar 支持周日期; false否则。
      自从:
      1.7
      参见:
    • getWeekYear

      public int getWeekYear()
      返回由此 Calendar 表示的星期年。周年与周周期同步。 第一周的第一天 是一周年的第一天。

      此方法的默认实现抛出一个 UnsupportedOperationException

      返回:
      这个 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) 为任何可能的时间值返回的最小值。最小最大值取决于实例的日历系统特定参数。例如,公历系统的CalendarDAY_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

      public Object  clone()
      创建并返回此对象的副本。
      重写:
      clone 在类 Object
      返回:
      此对象的副本。
      参见:
    • toString

      public String  toString()
      返回此日历的字符串表示形式。此方法仅用于调试目的,返回字符串的格式可能因实现而异。返回的字符串可能为空,但可能不是 null
      重写:
      toString 在类 Object
      返回:
      此日历的字符串表示形式。
    • toInstant

      public final Instant  toInstant()
      将此对象转换为 Instant

      转换会创建一个 Instant,它表示时间线上与此 Calendar 相同的点。

      返回:
      代表时间线上同一点的瞬间
      自从:
      1.8