模块 java.base

类 AbstractChronology

java.lang.Object
java.time.chrono.AbstractChronology
所有已实现的接口:
Comparable<Chronology> , Chronology
已知子类:
HijrahChronology , IsoChronology , JapaneseChronology , MinguoChronology , ThaiBuddhistChronology

public abstract class AbstractChronology extends Object implements Chronology
日历系统的抽象实现,用于组织和标识日期。

主要的日期和时间 API 建立在 ISO 日历系统之上。年表在幕后运行以表示日历系统的一般概念。

有关详细信息,请参阅 Chronology

实现要求:
此类与Chronology 接口分离,因此不继承静态方法。虽然 Chronology 可以直接实现,但强烈建议改为扩展此抽象类。

必须小心实现此类,以确保其他类正确运行。所有可以实例化的实现都必须是最终的、不可变的和线程安全的。只要有可能,子类就应该是可序列化的。

自从:
1.8
  • 构造方法详细信息

    • AbstractChronology

      protected AbstractChronology()
      创建实例。
  • 方法详情

    • resolveDate

      public ChronoLocalDate  resolveDate(Map <TemporalField ,Long > fieldValues, ResolverStyle  resolverStyle)
      在解析期间将已解析的 ChronoField 值解析为日期。

      大多数 TemporalField 实现都是使用字段上的 resolve 方法解析的。相比之下,ChronoField 类定义的字段仅与年表相关。因此,ChronoField 日期字段在特定年表的上下文中在此处解析。

      ChronoField 实例通过此方法解析,可能在子类中被覆盖。

      • EPOCH_DAY - 如果存在,则将其转换为日期,然后根据日期交叉检查所有其他日期字段。
      • PROLEPTIC_MONTH - 如果存在,则将其拆分为 YEARMONTH_OF_YEAR。如果模式是严格的或智能的,则验证该字段。
      • YEAR_OF_ERAERA - 如果两者都存在,则它们组合起来形成一个 YEAR 。在宽松模式下,YEAR_OF_ERA 范围未被验证,在智能和严格模式下它是。 ERA 在所有三种模式下都针对范围进行了验证。如果只有 YEAR_OF_ERA 存在,并且模式是 smart 或 lenient,则假定最后一个可用时代。在严格模式下,不假定任何纪元,YEAR_OF_ERA 保持不变。如果只有 ERA 存在,则保持不变。
      • YEARMONTH_OF_YEARDAY_OF_MONTH - 如果所有三个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式是 smart 或 strict,则验证月份和日期。如果模式宽松,那么日期的组合方式相当于在所请求年份的第一个月的第一天创建一个日期,然后加上月差,然后加上天差。如果模式是智能的,并且每月的日期大于年月的最大值,则将日期调整为每月的最后一天。如果模式是严格的,那么这三个字段必须形成一个有效的日期。
      • YEARDAY_OF_YEAR - 如果两者都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式宽松,则日期的组合方式相当于在请求年份的第一天创建一个日期,然后添加天数差异。如果模式是 smart 或 strict,那么这两个字段必须形成一个有效日期。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH - 如果所有四个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式宽松,那么日期的组合方式相当于在所请求年份的第一个月的第一天创建一个日期,然后加上月差,然后是周差,然后是天差。如果模式是智能或严格,则所有四个字段都将验证到它们的外部范围。然后以相当于在请求的年和月的第一天创建日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日和周调整是否未更改月份。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHDAY_OF_WEEK - 如果所有四个都存在,则将它们组合起来形成一个日期。该方法与上面在 ALIGNED_DAY_OF_WEEK_IN_MONTH 中描述的年、月和周相同。处理完年、月和周后,星期几将调整为下一个或相同的匹配星期几。
      • YEARALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR - 如果所有三个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式宽松,则日期的组合方式相当于在所请求年份的第一天创建一个日期,然后添加以周为单位的差异,然后以天为单位。如果模式是智能或严格,则所有三个字段都将验证到它们的外部范围。然后以相当于在所请求年份的第一天创建一个日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日期和星期的调整是否未更改年份。
      • YEARALIGNED_WEEK_OF_YEARDAY_OF_WEEK - 如果所有三个都存在,则将它们组合起来形成一个日期。该方法与上面在 ALIGNED_DAY_OF_WEEK_IN_YEAR 中描述的年和周相同。一旦处理了年和周,星期几就会调整为下一个或相同的匹配星期几。

      默认实现适用于大多数日历系统。如果发现 ChronoField.YEAR_OF_ERA 没有 ChronoField.ERA ,则使用 Chronology.eras() 中的最后一个纪元。该实现假定每周有 7 天,每月的第一天值为 1,每年的第一天值为 1,并且月份和年份的第一天始终存在。

      指定者:
      resolveDate 在接口 Chronology
      参数:
      fieldValues - 字段到值的映射,可以更新,不为空
      resolverStyle - 请求的解析类型,不为空
      返回:
      解决日期,如果信息不足以创建日期则为 null
      抛出:
      DateTimeException - 如果无法解析日期,通常是因为输入数据存在冲突
    • compareTo

      public int compareTo(Chronology  other)
      将此年表与另一个年表进行比较。

      比较顺序首先按年表 ID 字符串,然后按特定于子类的任何附加信息。正如 Comparable 所定义的那样,它“与等于一致”。

      指定者:
      compareTo 在接口 Chronology
      指定者:
      compareTo 在接口 Comparable<Chronology>
      实现要求:
      此实现比较时间顺序 ID。子类必须比较它们存储的任何附加状态。
      参数:
      other - 要比较的其他年表,不为空
      返回:
      比较值,小于则为负,大于则为正
    • equals

      public boolean equals(Object  obj)
      检查此年表是否等于另一个年表。

      比较基于对象的整个状态。

      指定者:
      equals 在接口 Chronology
      重写:
      equals 在类 Object
      实现要求:
      此实现检查类型并调用 compareTo(java.time.chrono.Chronology)
      参数:
      obj - 要检查的对象,null 返回 false
      返回:
      如果这等于其他年表,则为真
      参见:
    • hashCode

      public int hashCode()
      此年表的哈希码。

      哈希码应该基于对象的整个状态。

      指定者:
      hashCode 在接口 Chronology
      重写:
      hashCode 在类 Object
      实现要求:
      此实现基于时间顺序 ID 和类。子类应该添加它们存储的任何附加状态。
      返回:
      合适的哈希码
      参见:
    • toString

      public String  toString()
      使用年表 ID 将此年表输出为 String
      指定者:
      toString 在接口 Chronology
      重写:
      toString 在类 Object
      返回:
      此年表的字符串表示形式,不为空