java.lang.Object
java.time.chrono.AbstractChronology
- 所有已实现的接口:
Comparable<Chronology>,Chronology
- 已知子类:
HijrahChronology,IsoChronology,JapaneseChronology,MinguoChronology,ThaiBuddhistChronology
日历系统的抽象实现,用于组织和标识日期。
主要的日期和时间 API 建立在 ISO 日历系统之上。年表在幕后运行以表示日历系统的一般概念。
有关详细信息,请参阅 Chronology 。
- 实现要求:
-
此类与
Chronology接口分离,因此不继承静态方法。虽然Chronology可以直接实现,但强烈建议改为扩展此抽象类。必须小心实现此类,以确保其他类正确运行。所有可以实例化的实现都必须是最终的、不可变的和线程安全的。只要有可能,子类就应该是可序列化的。
- 自从:
- 1.8
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述intcompareTo(Chronology other) 将此年表与另一个年表进行比较。boolean检查此年表是否等于另一个年表。inthashCode()此年表的哈希码。resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle) 在解析期间将已解析的ChronoField值解析为日期。toString()使用年表 ID 将此年表输出为String。在接口 java.time.chrono.Chronology 中声明的方法
date, date, date, dateEpochDay, dateNow, dateNow, dateNow, dateYearDay, dateYearDay, epochSecond, epochSecond, eraOf, eras, getCalendarType, getDisplayName, getId, isIsoBased, isLeapYear, localDateTime, period, prolepticYear, range, zonedDateTime, zonedDateTime
-
构造方法详细信息
-
AbstractChronology
protected AbstractChronology()创建实例。
-
-
方法详情
-
resolveDate
public ChronoLocalDate resolveDate(Map <TemporalField , Long > fieldValues, ResolverStyle resolverStyle) 在解析期间将已解析的ChronoField值解析为日期。大多数
TemporalField实现都是使用字段上的 resolve 方法解析的。相比之下,ChronoField类定义的字段仅与年表相关。因此,ChronoField日期字段在特定年表的上下文中在此处解析。ChronoField实例通过此方法解析,可能在子类中被覆盖。EPOCH_DAY- 如果存在,则将其转换为日期,然后根据日期交叉检查所有其他日期字段。PROLEPTIC_MONTH- 如果存在,则将其拆分为YEAR和MONTH_OF_YEAR。如果模式是严格的或智能的,则验证该字段。YEAR_OF_ERA和ERA- 如果两者都存在,则它们组合起来形成一个YEAR。在宽松模式下,YEAR_OF_ERA范围未被验证,在智能和严格模式下它是。ERA在所有三种模式下都针对范围进行了验证。如果只有YEAR_OF_ERA存在,并且模式是 smart 或 lenient,则假定最后一个可用时代。在严格模式下,不假定任何纪元,YEAR_OF_ERA保持不变。如果只有ERA存在,则保持不变。YEAR、MONTH_OF_YEAR和DAY_OF_MONTH- 如果所有三个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR都经过验证。如果模式是 smart 或 strict,则验证月份和日期。如果模式宽松,那么日期的组合方式相当于在所请求年份的第一个月的第一天创建一个日期,然后加上月差,然后加上天差。如果模式是智能的,并且每月的日期大于年月的最大值,则将日期调整为每月的最后一天。如果模式是严格的,那么这三个字段必须形成一个有效的日期。YEAR和DAY_OF_YEAR- 如果两者都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR都经过验证。如果模式宽松,则日期的组合方式相当于在请求年份的第一天创建一个日期,然后添加天数差异。如果模式是 smart 或 strict,那么这两个字段必须形成一个有效日期。YEAR、MONTH_OF_YEAR、ALIGNED_WEEK_OF_MONTH和ALIGNED_DAY_OF_WEEK_IN_MONTH- 如果所有四个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR都经过验证。如果模式宽松,那么日期的组合方式相当于在所请求年份的第一个月的第一天创建一个日期,然后加上月差,然后是周差,然后是天差。如果模式是智能或严格,则所有四个字段都将验证到它们的外部范围。然后以相当于在请求的年和月的第一天创建日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日和周调整是否未更改月份。YEAR、MONTH_OF_YEAR、ALIGNED_WEEK_OF_MONTH和DAY_OF_WEEK- 如果所有四个都存在,则将它们组合起来形成一个日期。该方法与上面在ALIGNED_DAY_OF_WEEK_IN_MONTH中描述的年、月和周相同。处理完年、月和周后,星期几将调整为下一个或相同的匹配星期几。YEAR、ALIGNED_WEEK_OF_YEAR和ALIGNED_DAY_OF_WEEK_IN_YEAR- 如果所有三个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR都经过验证。如果模式宽松,则日期的组合方式相当于在所请求年份的第一天创建一个日期,然后添加以周为单位的差异,然后以天为单位。如果模式是智能或严格,则所有三个字段都将验证到它们的外部范围。然后以相当于在所请求年份的第一天创建一个日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日期和星期的调整是否未更改年份。YEAR、ALIGNED_WEEK_OF_YEAR和DAY_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
将此年表与另一个年表进行比较。比较顺序首先按年表 ID 字符串,然后按特定于子类的任何附加信息。正如
Comparable所定义的那样,它“与等于一致”。- 指定者:
compareTo在接口Chronology中- 指定者:
compareTo在接口Comparable<Chronology>中- 实现要求:
- 此实现比较时间顺序 ID。子类必须比较它们存储的任何附加状态。
- 参数:
other- 要比较的其他年表,不为空- 返回:
- 比较值,小于则为负,大于则为正
-
equals
检查此年表是否等于另一个年表。比较基于对象的整个状态。
- 指定者:
equals在接口Chronology中- 重写:
equals在类Object中- 实现要求:
-
此实现检查类型并调用
compareTo(java.time.chrono.Chronology)。 - 参数:
obj- 要检查的对象,null 返回 false- 返回:
- 如果这等于其他年表,则为真
- 参见:
-
hashCode
public int hashCode()此年表的哈希码。哈希码应该基于对象的整个状态。
- 指定者:
hashCode在接口Chronology中- 重写:
hashCode在类Object中- 实现要求:
- 此实现基于时间顺序 ID 和类。子类应该添加它们存储的任何附加状态。
- 返回:
- 合适的哈希码
- 参见:
-
toString
使用年表 ID 将此年表输出为String。- 指定者:
toString在接口Chronology中- 重写:
toString在类Object中- 返回:
- 此年表的字符串表示形式,不为空
-