模块  java.base
软件包  java.time.chrono

Class AbstractChronology

  • 实现的所有接口
    Comparable<Chronology>Chronology
    已知直接子类:
    HijrahChronologyIsoChronologyJapaneseChronologyMinguoChronologyThaiBuddhistChronology

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

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

    有关详细信息,请参阅Chronology

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

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

    从以下版本开始:
    1.8
    • 构造方法详细信息

      • AbstractChronology

        protected AbstractChronology()
        创建一个实例。
    • 方法详细信息

      • resolveDate

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

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

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

        • EPOCH_DAY - 如果存在, EPOCH_DAY其转换为日期,然后根据日期对所有其他日期字段进行交叉检查。
        • PROLEPTIC_MONTH - 如果存在,则将其拆分为YEARMONTH_OF_YEAR 如果模式严格或智能,则验证该字段。
        • YEAR_OF_ERAERA - 如果两者都存在,则它们组合形成YEAR 在宽松模式下, YEAR_OF_ERA范围未经验证,在智能和严格模式下。 ERA在所有三种模式下均经过验证。 如果仅存在YEAR_OF_ERA ,并且模式是智能或宽松的,则假定最后一个可用时间。 在严格模式下,没有假设时代, YEAR_OF_ERA保持不变。 如果仅存在ERA ,则保持不变。
        • YEARMONTH_OF_YEARDAY_OF_MONTH -如果所有三个都存在,那么它们被组合成一个日期。 在所有三种模式中, YEAR都经过验证。 如果模式是智能模式或严格模式,则验证月份和日期。 如果模式是宽松的,那么日期的组合方式相当于在请求年份的第一个月的第一天创建日期,然后添加月份差异,然后是天数差异。 如果模式是智能的,并且日期大于年 - 月的最大值,那么将日期调整为最后一天。 如果模式是严格的,则三个字段必须形成有效日期。
        • YEARDAY_OF_YEAR - 如果两者都存在,则将它们组合起来形成日期。 在所有三种模式下, YEAR都经过验证。 如果模式是宽松的,那么日期的组合方式相当于在请求年份的第一天创建日期,然后添加天数差异。 如果模式是智能或严格,则两个字段必须形成有效日期。
        • 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年,月和周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数年ALIGNED_DAY_OF_WEEK_IN_YEARALIGNED_DAY_OF_WEEK_IN_YEAR 一旦处理了年份和周数,将星期几调整为下一个或相同的匹配日。

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

        Specified by:
        resolveDate在界面 Chronology
        参数
        fieldValues - 值的字段映射,可以更新,而不是null
        resolverStyle - 请求的解析类型,不为null
        结果
        已解决的日期,如果创建日期的信息不足,则为null
        异常
        DateTimeException - 如果无法解析日期,通常是因为输入数据存在冲突
      • compareTo

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

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

        Specified by:
        compareTo ,界面 Chronology
        Specified by:
        compareTo接口 Comparable<Chronology>
        实现要求:
        此实现比较了时间顺序ID。 子类必须比较它们存储的任何其他状态。
        参数
        other - 要比较的其他年表,不是null
        结果
        比较器值,如果更小则为负,如果更大则为正
      • toString

        public String toString()
        使用年表ID将此年表输出为 String
        Specified by:
        toString在界面 Chronology
        重写:
        toString在课程 Object
        结果
        此年表的字符串表示形式,不为null