Module java.base
Package java.time.chrono

Class 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,但强烈建议扩展此抽象类。

必须小心实现此类,以确保其他类正常运行。所有可以实例化的实现必须是final、immutable和线程安全的。子类应尽可能实现Serializable。

自版本:
1.8
  • Constructor Details

    • AbstractChronology

      protected AbstractChronology()
      创建一个实例。
  • Method Details

    • resolveDate

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

      大多数TemporalField实现使用字段上的resolve方法进行解析。相比之下,ChronoField类定义的字段仅在相对于年表的情况下具有意义。因此,在特定年表的上下文中,在此处解析ChronoField日期字段。

      此方法解析ChronoField实例,可以在子类中重写。

      • EPOCH_DAY - 如果存在,则将其转换为日期,然后将所有其他日期字段与日期进行交叉检查。
      • PROLEPTIC_MONTH - 如果存在,则将其拆分为YEARMONTH_OF_YEAR。如果模式是strict或smart,则对字段进行验证。
      • 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,则将验证月份和日期。如果模式是lenient,则将以等同于在请求的年份的第一个月的第一天创建日期的方式组合日期,然后添加月份的差异,然后添加日期的差异。如果模式是smart,并且日期大于年月的最大日期,则将日期调整为最后一天。如果模式是strict,则这三个字段必须形成有效日期。
      • YEARDAY_OF_YEAR - 如果两者都存在,则将它们组合成一个日期。在所有三种模式中,将验证YEAR。如果模式是lenient,则将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加日期的差异。如果模式是smart或strict,则这两个字段必须形成有效日期。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH - 如果四者都存在,则将它们组合成一个日期。在所有三种模式中,将验证YEAR。如果模式是lenient,则将以等同于在请求年份的第一个月的第一天创建日期的方式组合日期,然后添加月份的差异,然后添加周数的差异,然后添加日期的差异。如果模式是smart或strict,则将验证所有四个字段的外部范围。然后,将以等同于在请求年份和月份的第一天创建日期的方式组合日期,然后添加周数和日期的数量以达到它们的值。如果模式是strict,则还将验证日期,以检查日期和周调整是否更改了月份。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHDAY_OF_WEEK - 如果四者都存在,则将它们组合成一个日期。对于年、月和周中的年份,月份和周的处理方式与ALIGNED_DAY_OF_WEEK_IN_MONTH中描述的相同。一旦处理了年、月和周,将调整星期几为下一个或相同匹配的星期几。
      • YEARALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR - 如果三者都存在,则将它们组合成一个日期。在所有三种模式中,将验证YEAR。如果模式是lenient,则将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加周数的差异,然后添加日期的差异。如果模式是smart或strict,则将验证所有三个字段的外部范围。然后,将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加周数和日期的数量以达到它们的值。如果模式是strict,则还将验证日期,以检查日期和周调整是否更改了年份。
      • 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字符串,然后按子类特定的任何其他信息。它是"与equals一致",如Comparable定义的那样。

      指定者:
      compareTo 在接口 Chronology
      指定者:
      compareTo 在接口 Comparable<Chronology>
      实现要求:
      此实现比较年表ID。子类必须比较它们存储的任何其他状态。
      参数:
      other - 要比较的另一个年表,不能为空
      返回:
      比较器值,即将此ID字符串与other的ID字符串进行比较
    • equals

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

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

      指定者:
      equals 在接口 Chronology
      覆盖:
      equals 在类 Object
      实现要求:
      此实现检查类型并调用compareTo(java.time.chrono.Chronology)
      参数:
      obj - 要检查的对象,null返回false
      返回:
      如果此对象等于另一个年表,则返回true
      参见:
    • hashCode

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

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

      指定者:
      hashCode 在接口 Chronology
      覆盖:
      hashCode 在类 Object
      实现要求:
      此实现基于年表ID和类。子类应添加它们存储的任何附加状态。
      返回:
      适当的哈希码
      参见:
    • toString

      public String toString()
      输出此年表作为一个String,使用年表ID。
      指定者:
      toString 在接口 Chronology
      覆盖:
      toString 在类 Object
      返回:
      此年表的字符串表示,不为null