java.lang.Object
java.time.chrono.AbstractChronology
- 所有已实现的接口:
-
Comparable<Chronology>
,Chronology
- 直接已知的子类:
-
HijrahChronology
,IsoChronology
,JapaneseChronology
,MinguoChronology
,ThaiBuddhistChronology
一个日历系统的抽象实现,用于组织和识别日期。
主要的日期和时间API建立在ISO日历系统上。年表在幕后运行,以表示日历系统的一般概念。
查看更多详细信息,请参阅Chronology
。
- 实现要求:
-
该类与
Chronology
接口分开,以便静态方法不会被继承。虽然可以直接实现Chronology
,但强烈建议扩展此抽象类。必须小心实现此类,以确保其他类正常运行。所有可以实例化的实现必须是final、immutable和线程安全的。子类应尽可能实现Serializable。
- 自版本:
- 1.8
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
compareTo
(Chronology other) 将此年表与另一个年表进行比较。boolean
检查此年表是否等于另一个年表。int
hashCode()
此年表的哈希码。resolveDate
(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle) 将解析的ChronoField
值解析为解析期间的日期。toString()
将此年表输出为一个String
,使用年表ID。Methods declared in class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods declared in interface 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
-
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
- 如果存在,则将其拆分为YEAR
和MONTH_OF_YEAR
。如果模式是strict或smart,则对字段进行验证。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,则将验证月份和日期。如果模式是lenient,则将以等同于在请求的年份的第一个月的第一天创建日期的方式组合日期,然后添加月份的差异,然后添加日期的差异。如果模式是smart,并且日期大于年月的最大日期,则将日期调整为最后一天。如果模式是strict,则这三个字段必须形成有效日期。YEAR
和DAY_OF_YEAR
- 如果两者都存在,则将它们组合成一个日期。在所有三种模式中,将验证YEAR
。如果模式是lenient,则将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加日期的差异。如果模式是smart或strict,则这两个字段必须形成有效日期。YEAR
、MONTH_OF_YEAR
、ALIGNED_WEEK_OF_MONTH
和ALIGNED_DAY_OF_WEEK_IN_MONTH
- 如果四者都存在,则将它们组合成一个日期。在所有三种模式中,将验证YEAR
。如果模式是lenient,则将以等同于在请求年份的第一个月的第一天创建日期的方式组合日期,然后添加月份的差异,然后添加周数的差异,然后添加日期的差异。如果模式是smart或strict,则将验证所有四个字段的外部范围。然后,将以等同于在请求年份和月份的第一天创建日期的方式组合日期,然后添加周数和日期的数量以达到它们的值。如果模式是strict,则还将验证日期,以检查日期和周调整是否更改了月份。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
。如果模式是lenient,则将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加周数的差异,然后添加日期的差异。如果模式是smart或strict,则将验证所有三个字段的外部范围。然后,将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加周数和日期的数量以达到它们的值。如果模式是strict,则还将验证日期,以检查日期和周调整是否更改了年份。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字符串,然后按子类特定的任何其他信息。它是"与equals一致",如
Comparable
定义的那样。- 指定者:
-
compareTo
在接口Chronology
中 - 指定者:
-
compareTo
在接口Comparable<Chronology>
中 - 实现要求:
- 此实现比较年表ID。子类必须比较它们存储的任何其他状态。
- 参数:
-
other
- 要比较的另一个年表,不能为空 - 返回:
-
比较器值,即将此ID字符串与
other
的ID字符串进行比较
-
equals
检查此年表是否等于另一个年表。比较基于对象的整个状态。
- 指定者:
-
equals
在接口Chronology
中 - 覆盖:
-
equals
在类Object
中 - 实现要求:
-
此实现检查类型并调用
compareTo(java.time.chrono.Chronology)
。 - 参数:
-
obj
- 要检查的对象,null返回false - 返回:
- 如果此对象等于另一个年表,则返回true
- 参见:
-
hashCode
public int hashCode()此年表的哈希码。哈希码应基于对象的整个状态。
- 指定者:
-
hashCode
在接口Chronology
- 覆盖:
-
hashCode
在类Object
- 实现要求:
- 此实现基于年表ID和类。子类应添加它们存储的任何附加状态。
- 返回:
- 适当的哈希码
- 参见:
-
toString
输出此年表作为一个String
,使用年表ID。- 指定者:
-
toString
在接口Chronology
- 覆盖:
-
toString
在类Object
- 返回:
- 此年表的字符串表示,不为null
-