public abstract class AbstractChronology extends Object implements Chronology
Chronology
分离,以使静态方法不被继承。
虽然Chronology
可以直接实现,但强烈建议扩展这个抽象类。
必须小心实施此类,以确保其他类正确运行。 可以实例化的所有实现必须是最终的,不可变的和线程安全的。 子类应尽可能可序列化。
Modifier | Constructor and Description |
---|---|
protected |
AbstractChronology()
创建一个实例。
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Chronology other)
将这个年表与另一个年表进行比较。
|
boolean |
equals(Object obj)
检查这个年表是否等于另一个年表。
|
int |
hashCode()
这个年表的哈希码。
|
ChronoLocalDate |
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解析解析时解析为
ChronoField 值。
|
String |
toString()
输出该年表作为
String ,使用年表ID。
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
date, date, date, dateEpochDay, dateNow, dateNow, dateNow, dateYearDay, dateYearDay, eraOf, eras, from, getCalendarType, getDisplayName, getId, isLeapYear, localDateTime, period, prolepticYear, range, zonedDateTime, zonedDateTime
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
存在,并且模式是聪明或宽松的,那么假定最后一个可用的时代。 在严格的模式下,不考虑时代, YEAR_OF_ERA
保持不变。 如果只有ERA
存在,那么它是保持不变的。 YEAR
, MONTH_OF_YEAR
和DAY_OF_MONTH
-如果所有三个都存在,那么它们被组合成一个日期。 在所有三种模式下, YEAR
都经过验证。 如果模式是聪明或严格的,则验证月和日。 如果模式宽松,则以相当于在请求年份的第一个月的第一天创建日期的方式组合日期,然后将月份中的差额加上差异天数。 如果模式是聪明的,并且月的日期大于年月的最大值,则月的日期被调整到最后一个月。 如果模式严格,则三个字段必须形成有效的日期。 YEAR
和DAY_OF_YEAR
- 如果两者都存在,则它们被组合以形成日期。 在所有三种模式下, YEAR
都经过验证。 如果模式宽松,那么日期将以相当于在请求年的第一天创建日期的方式组合,然后加上差异。 如果模式是聪明或严格的,那么这两个字段必须形成一个有效的日期。 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中,该方法与上述相同,多年,数月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
- 可以更新的字段映射到值,不为null
resolverStyle
- 请求的解析类型,不为null
DateTimeException
- 如果日期无法解决,通常是因为输入数据中存在冲突
public int compareTo(Chronology other)
比较顺序首先按年表ID字符串,然后通过特定于子类的任何附加信息。 它与“等于”一致,如Comparable
所定义。
compareTo
在接口
Comparable<Chronology>
compareTo
在界面
Chronology
other
- 其他年表要比较,不为null
public boolean equals(Object obj)
比较是基于对象的整个状态。
equals
在接口
Chronology
equals
在类别
Object
compareTo(java.time.chrono.Chronology)
。
obj
- 要检查的对象,null返回false
Object.hashCode()
, HashMap
public int hashCode()
哈希码应该基于对象的整个状态。
hashCode
在界面
Chronology
hashCode
在类别
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
String
,使用年表ID。
toString
在界面
Chronology
toString
在
Object