模块  java.base
软件包  java.util

Class Calendar

  • 实现的所有接口
    Serializable , Cloneable , Comparable<Calendar>
    已知直接子类:
    GregorianCalendar

    public abstract class Calendar
    extends Object
    implements Serializable, Cloneable, Comparable<Calendar>
    所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 瞬间可以用毫秒值表示,该值是1970年1月1日格林威治标准时间1970年1月1日00:00:00,000(格里高利)的Epoch的偏移量。

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

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

         Calendar rightNow = Calendar.getInstance();
     

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

    获取和设置日历字段值

    可以通过调用set方法来设置日历字段值。 Calendar设置的任何字段值在需要计算其时间值(距Epoch的毫秒数)或日历字段的值之前不会被解释。 调用get , getTimeInMillis , getTime , add和roll涉及这样的计算。

    宽大

    Calendar具有解释日历字段, 宽松 , 非宽松的两种模式。 当Calendar处于宽松模式时,它接受比它产生的更广泛的日历字段值。 当Calendar重新计算返回Calendar日历字段值时, get()所有日历字段进行规范化。 例如,宽松GregorianCalendar解释MONTH == JANUARY , DAY_OF_MONTH == 32如2月1日。

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

    First Week

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

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

    日历字段分辨率

    从日历字段计算日期和时间时,可能没有足够的信息用于计算(例如只有年月和月份没有日期),或者可能存在不一致的信息(例如1996年7月15日星期二(格里高利) ) - 1996年7月15日实际上是星期一)。 Calendar将解析日历字段值以按以下方式确定日期和时间。

    If there is any conflict in calendar field values, Calendar gives priorities to calendar fields that have been set more recently.以下是日历字段的默认组合。 将使用由最近设置的单个字段确定的最新组合。

    For the date fields :

     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
     
    For the time of day fields :
     HOUR_OF_DAY
     AM_PM + HOUR
     

    如果有任何日历字段的值未在所选字段组合中设置,则Calendar将使用其默认值。 每个字段的默认值可能因具体的日历系统而异。 例如,在GregorianCalendar ,一个字段的默认值是相同的时代的开始:即YEAR = 1970 , MONTH = JANUARY , DAY_OF_MONTH = 1 ,等等。

    注意:某些奇异时间的解释存在某些可能的含糊之处,可通过以下方式解决:

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

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

    野外操纵

    :日历字段可以用三种方法来改变set() , add()和roll() 。

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

    例如 :考虑GregorianCalendar最初被设置为1999调用8月31日, set(Calendar.MONTH, Calendar.SEPTEMBER)集日至9月31日,1999年这是一个临时的内部表示解析为1999年10月1日,如果getTime() ,然后调用。 但是,在调用set(Calendar.DAY_OF_MONTH, 30)之前调用getTime()将日期设置为1999年9月30日,因为在set()之后没有重新计算。

    add(f, delta)增加delta到现场f 。 这相当于通过两次调整调用set(f, get(f) + delta) :

    Add rule 1. The value of field f after the call minus the value of field f before the call is delta, modulo any overflow that has occurred in field f. Overflow occurs when a field value exceeds its range and, as a result, the next larger field is incremented or decremented and the field value is adjusted back into its range.

    Add rule 2. If a smaller field is expected to be invariant, but it is impossible for it to be equal to its prior value because of changes in its minimum or maximum after field f is changed or other constraints, such as time zone offset changes, then its value is adjusted to be as close as possible to its expected value. A smaller field represents a smaller unit of time. HOUR is a smaller field than DAY_OF_MONTH. No adjustment is made to smaller fields that are not expected to be invariant. The calendar system determines what fields are expected to be invariant.

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

    例如 :考虑GregorianCalendar最初被设置为1999调用8月31日, add(Calendar.MONTH, 13)集日历9月30日,2000年添加规则1套MONTH场至九月,因为加入13个月月给明年九月。 由于DAY_OF_MONTH不能在9月份的GregorianCalendar ,因此添加规则2将DAY_OF_MONTH设置为最接近的可能值。 虽然它是一个较小的字段, DAY_OF_WEEK规则2没有对DAY_OF_WEEK进行调整,因为当月份在GregorianCalendar发生变化时,预计会发生变化。

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

    Roll rule. Larger fields are unchanged after the call. A larger field represents a larger unit of time. DAY_OF_MONTH is a larger field than 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() ,取决于是否应该影响更大的字段,用户界面可以像大多数用户直观期望的那样运行。

    从以下版本开始:
    1.1
    另请参见:
    System.currentTimeMillis() , Date , GregorianCalendar , TimeZone , DateFormat , Serialized Form
    • 嵌套类汇总

      嵌套类  
      变量和类型 类 描述
      static class  Calendar.Builder
      Calendar.Builder用于从各种日期时间参数创建 Calendar 。
    • 字段汇总

      字段  
      变量和类型 字段 描述
      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[]与当前设置的时间同步, 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字段编号表示时代,例如Julian日历中的AD或BC。
      static int FEBRUARY
      MONTH字段的值,表示格里高利和朱利安日历中一年中的第二个月。
      static int FIELD_COUNT
      get和 set识别的不同字段的数量。
      protected int[] 字段
      此日历的当前设置时间的日历字段值。
      static int FRIDAY
      DAY_OF_WEEK字段的值表示星期五。
      static int HOUR
      get和 set字段编号表示上午或下午的小时。
      static int HOUR_OF_DAY
      get和 set字段编号表示当天的小时。
      protected boolean[] isSet
      用于指示是否设置了日历的指定日历字段的标志。
      protected boolean isTimeSet
      如果那么 time的值有效 time真。
      static int JANUARY
      MONTH字段的值,表示Gregorian和Julian日历中一年中的第一个月。
      static int JULY
      MONTH字段的值,表示格里高利和朱利安日历中一年中的第七个月。
      static int JUNE
      MONTH字段的值,表示格里高利和朱利安日历中的第六个月。
      static int LONG
      getDisplayName和 getDisplayNames的样式说明 符 ,相当于 LONG_FORMAT 。
      static int LONG_FORMAT
      getDisplayName和 getDisplayNames的样式说明 符 ,指示用于格式的长名称。
      static int LONG_STANDALONE
      getDisplayName和 getDisplayNames的样式说明 符 ,表示独立使用的长名称,例如月份名称作为日历标题。
      static int MARCH
      MONTH字段的值,表示格里高利和朱利安日历中一年中的第三个月。
      static int MAY
      MONTH字段的值,表示Gregorian和Julian日历中一年中的第五个月。
      static int MILLISECOND
      get和 set字段编号表示秒内的毫秒数。
      static int MINUTE
      get和 set字段编号表示小时内的分钟。
      static int MONDAY
      DAY_OF_WEEK字段的值表示星期一。
      static int MONTH
      get和 set字段编号表示月份。
      static int NARROW_FORMAT
      getDisplayName和 getDisplayNames的样式说明 符 ,指示用于格式的窄名称。
      static int NARROW_STANDALONE
      getDisplayName和 getDisplayNames的样式说明 符 , 独立指示窄名称。
      static int NOVEMBER
      MONTH字段的值,表示格里高利和朱利安日历中一年中的第11个月。
      static int OCTOBER
      MONTH字段的值,表示格里高利和朱利安日历中一年中的第十个月。
      static int PM
      AM_PM字段的值,表示从中午到午夜之前的一天的时段。
      static int SATURDAY
      表示星期六的 DAY_OF_WEEK字段的值。
      static int SECOND
      get和 set字段编号表示分钟内的第二个。
      static int SEPTEMBER
      MONTH字段的值,表示格里高利和朱利安日历中一年中的第九个月。
      static int SHORT
      getDisplayName和 getDisplayNames的样式说明 符 ,相当于 SHORT_FORMAT 。
      static int SHORT_FORMAT
      getDisplayName和 getDisplayNames的样式说明 符 ,指示用于格式的短名称。
      static int SHORT_STANDALONE
      getDisplayName和 getDisplayNames的样式说明 符 ,指示独立使用的短名称,例如月份缩写作为日历标题。
      static int SUNDAY
      表示星期日的 DAY_OF_WEEK字段的值。
      static int THURSDAY
      DAY_OF_WEEK字段的值表示星期四。
      protected long time
      此日历的当前设置时间,以1970年1月1日格林威治标准时间0:00:00之后的毫秒数表示。
      static int TUESDAY
      表示星期二的 DAY_OF_WEEK字段的值。
      static int UNDECIMBER
      MONTH字段的值,表示一年中的第13个月。
      static int WEDNESDAY
      DAY_OF_WEEK字段的值表示星期三。
      static int WEEK_OF_MONTH
      get和 set字段编号, get set的周数。
      static int WEEK_OF_YEAR
      get和 set字段编号表示当前年份的周数。
      static int YEAR
      字段编号为 get和 set表示年份。
      static int ZONE_OFFSET
      get和 set字段编号,表示与GMT的原始偏移(以毫秒为单位)。
    • 构造方法摘要

      构造方法  
      变量 构造器 描述
      protected Calendar()
      使用默认时区和默认的 FORMAT语言环境构造日历。
      protected Calendar​(TimeZone zone, Locale aLocale)
      构造具有指定时区和区域设置的日历。
    • 方法摘要

      所有方法  静态方法  实例方法 抽象方法  具体的方法 
      变量和类型 方法 描述
      abstract void add​(int field, int amount)
      根据日历的规则,将指定的时间量添加或减去给定的日历字段。
      boolean after​(Object when)
      返回此 Calendar是否表示指定的 Object表示的时间之后的时间。
      boolean before​(Object when)
      返回此 Calendar是否表示指定的 Object代表的时间之前的时间。
      void clear()
      设置此 Calendar未定义的所有日历字段值和时间值(距离 Epoch的毫秒偏移量)。
      void clear​(int field)
      设置此 Calendar未定义的给定日历字段值和时间值(距离 Epoch的毫秒偏移量)。
      Object clone()
      创建并返回此对象的副本。
      int compareTo​(Calendar anotherCalendar)
      比较两个 Calendar对象表示的时间值(从 Epoch开始的毫秒偏移)。
      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的时间值,返回指定日历字段可能具有的 Calendar 。
      int getActualMinimum​(int field)
      给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar 。
      static Set<String> getAvailableCalendarTypes()
      返回不可修改的 Set其中包含运行时环境中 Calendar支持的所有日历类型。
      static Locale[] getAvailableLocales()
      返回所有语言环境的数组, getInstance方法可以 getInstance返回本地化实例。
      String getCalendarType()
      返回此 Calendar的日历类型。
      String getDisplayName​(int field, int style, Locale locale)
      返回给定 style和 locale日历 字段值的字符串表示 locale 。
      Map<String,​Integer> getDisplayNames​(int field, int style, Locale locale)
      返回 Map其中包含给定 style和 locale日历 字段所有名称及其对应的字段值。
      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实例的给定日历字段的 Calendar 。
      int getMinimalDaysInFirstWeek()
      获取一年中第一周所需的最小天数; 例如,如果第一周被定义为包含一年中第一个月的第一天的那一周,则该方法返回1。
      abstract int getMinimum​(int field)
      返回此 Calendar实例的给定日历字段的 Calendar 。
      Date getTime()
      返回一个 Date对象,表示此 Calendar的时间值(距离 Epoch的毫秒偏移量)。
      long getTimeInMillis()
      以毫秒为单位返回此Calendar的时间值。
      TimeZone getTimeZone()
      获取时区。
      int getWeeksInWeekYear()
      返回此 Calendar表示的周中的周 Calendar 。
      int getWeekYear()
      返回此 Calendar表示的 Calendar 。
      int hashCode()
      返回此日历的哈希码。
      protected int internalGet​(int field)
      返回给定日历字段的值。
      boolean isLenient()
      告诉日期/时间解释是否宽松。
      boolean isSet​(int field)
      确定给定的日历字段是否具有值集,包括由 get方法调用触发的内部字段计算设置的值的情况。
      boolean isWeekDateSupported()
      返回此 Calendar是否支持周日期。
      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_OF_DAY , MINUTE和 SECOND 。
      void setFirstDayOfWeek​(int value)
      设定一周的第一天是什么; 例如, SUNDAY在美国, MONDAY在法国。
      void setLenient​(boolean lenient)
      指定日期/时间解释是否宽松。
      void setMinimalDaysInFirstWeek​(int value)
      设定一年中第一周所需的最小天数; 例如,如果第一周定义为包含一年中第一个月的第一天的那一周,则使用值1调用此方法。
      void setTime​(Date date)
      使用给定的 Date设置此日历的时间。
      void setTimeInMillis​(long millis)
      从给定的long值设置此Calendar的当前时间。
      void setTimeZone​(TimeZone value)
      使用给定的时区值设置时区。
      void setWeekDate​(int weekYear, int weekOfYear, int dayOfWeek)
      使用给定的日期说明符设置此 Calendar的日期 - 星期年,星期几和星期几。
      Instant toInstant()
      将此对象转换为Instant 。
      String toString()
      返回此日历的字符串表示形式。
    • 字段详细信息

      • YEAR

        public static final int YEAR
        get和set字段编号表示年份。 这是特定于日历的值; 请参阅子类文档。
        另请参见:
        常数字段值
      • WEEK_OF_YEAR

        public static final int WEEK_OF_YEAR
        get和set字段编号表示当年的周数。 由getFirstDayOfWeek()和getMinimalDaysInFirstWeek()定义的一年中的第一周具有值1.子类定义在一年的第一周之前的天数WEEK_OF_YEAR的值。
        另请参见:
        getFirstDayOfWeek() , getMinimalDaysInFirstWeek() , 常数字段值
      • WEEK_OF_MONTH

        public static final int WEEK_OF_MONTH
        get和set字段编号表示get的周数。 由getFirstDayOfWeek()和getMinimalDaysInFirstWeek()定义的月份的第一周具有值1.子类定义在该月的第一周之前的天数的值WEEK_OF_MONTH 。
        另请参见:
        getFirstDayOfWeek() , getMinimalDaysInFirstWeek() , 常数字段值
      • 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
        get和set字段编号表示当月的日期。 这是DATE的同义词。 该月的第一天的价值为1。
        另请参见:
        DATE , 常数字段值
      • DAY_OF_YEAR

        public static final int DAY_OF_YEAR
        get和set字段编号表示当年的日期编号。 一年的第一天价值1。
        另请参见:
        常数字段值
      • 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和4结束。
        另请参见:
        DAY_OF_WEEK , WEEK_OF_MONTH , 常数字段值
      • AM_PM

        public static final int AM_PM
        get和set字段编号表示HOUR是在中午之前还是之后。 例如,在下午10:04: AM_PM是PM 。
        另请参见:
        AM , PM , HOUR , 常数字段值
      • 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: HOUR_OF_DAY是22。
        另请参见:
        HOUR , 常数字段值
      • MINUTE

        public static final int MINUTE
        get和set字段编号表示小时内的分钟。 例如,在下午10:04: MINUTE是4。
        另请参见:
        常数字段值
      • SECOND

        public static final int SECOND
        get和set字段编号表示分钟内的第二个。 例如,在下午10:04: SECOND是15。
        另请参见:
        常数字段值
      • MILLISECOND

        public static final int MILLISECOND
        get和set字段编号表示秒内的毫秒数。 例如,在下午10:04: 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实施子类支持历史夏令时时间表更改,则此字段反映此Calendar的时区的正确夏令时偏移值。

        另请参见:
        常数字段值
      • FIELD_COUNT

        public static final int FIELD_COUNT
        get和set识别的不同字段数。 字段编号范围为0..FIELD_COUNT-1 。
        另请参见:
        常数字段值
      • 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字段的值,表示一年中的第13个月。 虽然GregorianCalendar不使用此值,但是月历会这样做。
        另请参见:
        常数字段值
      • AM

        public static final int AM
        AM_PM字段的值,表示从午夜到正午之前的一天的时段。
        另请参见:
        常数字段值
      • PM

        public static final int PM
        AM_PM字段的值,表示从中午到午夜之前的一天的时段。
        另请参见:
        常数字段值
      • 字段

        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的值有效time真。 通过更改项目field[]使时间无效。
        另请参见:
        time
      • areFieldsSet

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

      • Calendar

        protected Calendar()
        使用默认时区和默认的 FORMAT语言环境构造日历。
        另请参见:
        TimeZone.getDefault()
      • Calendar

        protected Calendar​(TimeZone zone,
                           Locale aLocale)
        构造具有指定时区和区域设置的日历。
        参数
        zone - 要使用的时区
        aLocale - 周数据的区域设置
    • 方法详细信息

      • getInstance

        public static Calendar getInstance()
        使用默认时区和区域设置获取日历。 返回的Calendar基于默认时区中的当前时间,默认为FORMAT语言环境。

        如果语言环境包含时区“tz” Unicode extension ,则使用该时区。

        结果
        日历。
      • getInstance

        public static Calendar getInstance​(TimeZone zone)
        使用指定的时区和默认语言环境获取日历。 返回的Calendar基于给定时区中的当前时间,具有默认的FORMAT语言环境。
        参数
        zone - 要使用的时区
        结果
        日历。
      • getInstance

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

        如果区域设置包含时区“tz” Unicode extension ,则使用该时区。

        参数
        aLocale - 周数据的区域设置
        结果
        日历。
      • getInstance

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

        public static Locale[] getAvailableLocales()
        返回getInstance方法可以返回本地化实例的所有语言环境的数组。 返回的数组必须至少包含一个等于Locale.US的Locale实例。
        结果
        一组区域设置,其本地化的 Calendar实例可用。
      • computeFields

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

        public final Date getTime()
        返回表示此 Calendar的时间值(距离 Epoch的毫秒偏移量)的 Date对象。
        结果
        Date表示时间值。
        另请参见:
        setTime(Date) , getTimeInMillis()
      • setTime

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

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

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

        protected final int internalGet​(int field)
        返回给定日历字段的值。 该方法不涉及字段值的标准化或验证。
        参数
        字段 - 给定的日历字段。
        结果
        给定日历字段的值。
        另请参见:
        get(int)
      • set

        public final void set​(int year,
                              int month,
                              int date)
        设置日历字段的值YEAR , MONTH和DAY_OF_MONTH 。 保留其他日历字段的先前值。 如果不需要, 请先致电clear() 。
        参数
        year - 用于设置 YEAR日历字段的值。
        month - 用于设置MONTH日历字段的值。 月值基于0。 例如,0表示1月份。
        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日历字段的值。 月值基于0。 例如,0表示1月份。
        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_OF_DAY , MINUTE和SECOND 。 保留其他字段的先前值。 如果不需要, 请先致电clear() 。
        参数
        year - 用于设置 YEAR日历字段的值。
        month - 用于设置MONTH日历字段的值。 月值基于0。 例如,0表示1月份。
        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未定义的所有日历字段值和时间值(与Epoch的毫秒偏移量)。 这意味着isSet()将为所有日历字段返回false ,日期和时间计算将字段视为从未设置过。 Calendar实现类可以使用其特定的默认字段值进行日期/时间计算。 例如,如果YEAR字段值未定义,则GregorianCalendar使用1970。
        另请参见:
        clear(int)
      • clear

        public final void clear​(int field)
        设置此Calendar undefined的给定日历字段值和时间值(距离Epoch的毫秒偏移量)。 这意味着isSet(field)将返回false ,并且日期和时间计算将该字段视为从未设置过。 Calendar实现类可以使用字段的特定默认值进行日期和时间计算。

        的HOUR_OF_DAY , HOUR和AM_PM字段独立地处理,并且the resolution rule for the time of day被应用。 清除其中一个字段不会重置此Calendar的小时值。 使用set(Calendar.HOUR_OF_DAY, 0)重置小时值。

        参数
        字段 - 要清除的日历字段。
        另请参见:
        clear()
      • isSet

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

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

        例如,如果此Calendar是GregorianCalendar且其日期是2005-01-01,那么MONTH字段的字符串表示形式将是英语区域设置中的长样式中的“1月”或短样式中的“Jan”。 但是, DAY_OF_MONTH字段没有可用的字符串表示形式,此方法将返回null 。

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

        参数
        字段 - 返回字符串表示形式的日历字段
        style - 应用于字符串表示的样式; 之一SHORT_FORMAT ( SHORT ), SHORT_STANDALONE , LONG_FORMAT ( LONG ), LONG_STANDALONE , NARROW_FORMAT ,或NARROW_STANDALONE 。
        locale - 字符串表示的语言环境(由 locale指定的任何日历类型都将被忽略)
        结果
        给定 字段中给定 style字符串表示 style ,如果没有适用的字符串表示 style , null 。
        异常
        IllegalArgumentException - 如果 字段或 style无效,或者此 Calendar不宽松且任何日历字段具有无效值
        NullPointerException - 如果 locale为空
        从以下版本开始:
        1.6
      • getDisplayNames

        public Map<String,​Integer> getDisplayNames​(int field,
                                                         int style,
                                                         Locale locale)
        返回Map其中包含给定style和locale日历字段所有名称及其对应的字段值。 例如,如果此Calendar是GregorianCalendar ,则返回的地图将包含“Jan”到JANUARY ,“Feb”到FEBRUARY ,依此类推,在英语语言环境中的short样式中。

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

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

        默认实现支持DateFormatSymbols中包含的显示名称。 例如,如果字段是MONTH并且style是ALL_STYLES ,则此方法返回Map其中包含由DateFormatSymbols.getShortMonths()和DateFormatSymbols.getMonths()返回的所有字符串。

        参数
        字段 - 返回显示名称的日历字段
        style - 应用于字符串表示的样式; 之一SHORT_FORMAT ( SHORT ), SHORT_STANDALONE , LONG_FORMAT ( LONG ), LONG_STANDALONE , NARROW_FORMAT ,或NARROW_STANDALONE
        locale - 显示名称的语言环境
        结果
        一个 Map包含在所有显示名称 style和 locale和它们的字段值,或 null如果没有显示名称为定义 字段
        异常
        IllegalArgumentException - 如果 字段或 style无效,或者此 Calendar不宽松且任何日历字段具有无效值
        NullPointerException - 如果 locale为空
        从以下版本开始:
        1.6
      • complete

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

        public String getCalendarType()
        返回此Calendar的日历类型。 日历类型由Unicode区域设置数据标记语言(LDML)规范定义。

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

        结果
        LDML定义的日历类型或此 Calendar实例的类名
        从以下版本开始:
        1.8
        另请参见:
        Locale extensions , Locale.Builder.setLocale(Locale) , Locale.Builder.setUnicodeLocaleKeyword(String, String)
      • equals

        public boolean equals​(Object obj)
        将此Calendar与指定的Object 。 当且仅当参数是同一日历系统的Calendar对象时,结果为true ,该对象表示与此对象相同的Calendar参数下的相同时间值(距离Epoch的毫秒偏移)。

        的Calendar参数是由表示的值isLenient , getFirstDayOfWeek , getMinimalDaysInFirstWeek和getTimeZone方法。 如果两个Calendar之间的参数有任何差异,则此方法返回false 。

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

        重写:
        equals类 Object
        参数
        obj - 要与之比较的对象。
        结果
        true如果此对象等于obj ; 否则为false 。
        另请参见:
        Object.hashCode() , HashMap
      • before

        public boolean before​(Object when)
        返回此Calendar是否表示指定的Object表示的时间之前的时间。 这种方法相当于:
           compareTo(when) < 0  
        当且仅当when是Calendar实例时。 否则,该方法返回false 。
        参数
        when - 待比较的 Object
        结果
        true如果此时Calendar是由下式表示的时间之前when ; 否则为false 。
        另请参见:
        compareTo(Calendar)
      • after

        public boolean after​(Object when)
        返回此Calendar是否表示指定的Object表示的时间之后的时间。 这种方法相当于:
           compareTo(when) > 0  
        当且仅当when是Calendar实例时。 否则,该方法返回false 。
        参数
        when - 待比较的 Object
        结果
        true如果此Calendar的时间when于when表示的时间; 否则为false 。
        另请参见:
        compareTo(Calendar)
      • compareTo

        public int compareTo​(Calendar anotherCalendar)
        比较两个 Calendar对象表示的时间值(从 Epoch开始的毫秒偏移)。
        Specified by:
        compareTo in interface Comparable<Calendar>
        参数
        anotherCalendar - 待比较的 Calendar 。
        结果
        值0如果由所述参数表示的时间等于由此表示的时间Calendar ; 如果此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) 。

        参数
        字段 - 日历字段。
        amount - 要添加到字段中的日期或时间量。
        另请参见:
        roll(int,int) , set(int,int)
      • roll

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

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

        参数
        字段 - 时间字段。
        up - 指示是否要汇总或滚动指定时间字段的值。 如果滚动则使用true,否则使用false。
        另请参见:
        add(int,int) , set(int,int)
      • roll

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

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

        参数
        字段 - 日历字段。
        amount - 要添加到日历 字段的签名金额。
        从以下版本开始:
        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)
        指定日期/时间解释是否宽松。 通过宽松的解释,诸如“1996年2月942”之类的日期将被视为等同于1996年2月1日之后的第941天。通过严格(非宽松)的解释,这样的日期将导致例外被抛出。 默认值是宽松的。
        参数
        lenient - true如果要打开宽松模式; false是否要关闭。
        另请参见:
        isLenient() , DateFormat.setLenient(boolean)
      • isLenient

        public boolean isLenient()
        告诉日期/时间解释是否宽松。
        结果
        true如果此日历的解释模式是宽松的; 否则为false 。
        另请参见:
        setLenient(boolean)
      • setFirstDayOfWeek

        public void setFirstDayOfWeek​(int value)
        设定一周的第一天是什么; 例如, SUNDAY在美国, MONDAY在法国。
        参数
        value - 一周中的第一天。
        另请参见:
        getFirstDayOfWeek() , getMinimalDaysInFirstWeek()
      • setMinimalDaysInFirstWeek

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

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

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

        此方法的默认实现返回false 。

        结果
        true如果这个Calendar支持周日期; 否则为false 。
        从以下版本开始:
        1.7
        另请参见:
        getWeekYear() , setWeekDate(int,int,int) , getWeeksInWeekYear()
      • 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
        另请参见:
        isWeekDateSupported() , getFirstDayOfWeek() , getMinimalDaysInFirstWeek()
      • getLeastMaximum

        public abstract int getLeastMaximum​(int field)
        返回此Calendar实例的给定日历字段的最小最大值。 最低最大值定义为getActualMaximum(int)为任何可能的时间值返回的最小值 。 最小值最小值取决于实例的日历系统特定参数。 例如, Calendar对于格里高利历系统返回的28 DAY_OF_MONTH领域,由于28日是这个日历,二月在一个共同的一年中最短的月份的最后一天。
        参数
        字段 - 日历字段。
        结果
        给定日历字段的最小最大值。
        另请参见:
        getMinimum(int) , getMaximum(int) , getGreatestMinimum(int) , getActualMinimum(int) , getActualMaximum(int)
      • getActualMinimum

        public int getActualMinimum​(int field)
        给定此Calendar的时间值,返回指定日历字段可能具有的Calendar 。

        此方法的默认实现使用迭代算法来确定日历字段的实际最小值。 如果可能,子类应该使用更有效的实现来覆盖它 - 在许多情况下,它们可以简单地返回getMinimum() 。

        参数
        字段 - 日历字段
        结果
        此 Calendar的时间值的给定日历字段的 Calendar
        从以下版本开始:
        1.2
        另请参见:
        getMinimum(int) , getMaximum(int) , getGreatestMinimum(int) , getLeastMaximum(int) , getActualMaximum(int)
      • getActualMaximum

        public int getActualMaximum​(int field)
        给定此Calendar的时间值,返回指定日历字段可能具有的Calendar 。 例如, MONTH字段的实际最大值在某些年份为12,在希伯来日历系统中为其他年份的13。

        此方法的默认实现使用迭代算法来确定日历字段的实际最大值。 如果可能,子类应该使用更有效的实现来覆盖它。

        参数
        字段 - 日历字段
        结果
        此 Calendar的时间值的给定日历字段的 Calendar
        从以下版本开始:
        1.2
        另请参见:
        getMinimum(int) , getMaximum(int) , getGreatestMinimum(int) , getLeastMaximum(int) , getActualMinimum(int)
      • clone

        public Object clone()
        创建并返回此对象的副本。
        重写:
        clone在类 Object
        结果
        这个对象的副本。
        另请参见:
        Cloneable
      • toString

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

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

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

        结果
        表示时间线上相同点的瞬间
        从以下版本开始:
        1.8