- 所有父级接口:
TemporalAccessor,TemporalAdjuster
- 所有已知的实现类:
HijrahEra,IsoEra,JapaneseEra,MinguoEra,ThaiBuddhistEra
大多数日历系统都有一个纪元,将时间线分为两个纪元。然而,一些日历系统有多个纪元,例如每个领导人的统治时期。在所有情况下,时代在概念上都是时间线的最大划分。每个年表都定义了已知纪元的纪元和一个 Chronology.eras 来获取有效纪元。
例如,泰国佛历系统将时间分为两个纪元,一个日期之前和之后。相比之下,日本的历法系统为每位天皇的在位指定一个纪元。
Era 的实例可以使用 == 运算符进行比较。
- 实现要求:
- 必须小心实现此接口以确保其他类正确运行。所有实现都必须是单例的——最终的、不可变的和线程安全的。建议尽可能使用枚举。
- 自从:
- 1.8
-
方法总结
修饰符和类型方法描述default TemporaladjustInto(Temporal temporal) 将指定的时间对象调整为与此对象具有相同的时代。default intget(TemporalField field) 从这个时代获取指定字段的值作为int。default StringgetDisplayName(TextStyle style, Locale locale) 获取这个时代的文本表示。default longgetLong(TemporalField field) 从这个时代获取指定字段的值作为long。intgetValue()获取与年表定义的纪元关联的数值。default booleanisSupported(TemporalField field) 检查是否支持指定的字段。default <R> Rquery(TemporalQuery<R> query) 使用指定的查询查询此时代。default ValueRangerange(TemporalField field) 获取指定字段的有效值范围。
-
方法详情
-
getValue
int getValue()获取与年表定义的纪元关联的数值。每个年表都定义了预定义的时代和列出年表时代的方法。所有字段,包括时代,都有一个关联的数值。纪元数值的含义由年表根据以下原则确定:
- 在纪元 1970-01-01 (ISO) 中使用的纪元值为 1。
- 后来的时代依次具有更高的值。
- 较早的时代具有顺序较低的值,这可能是负数。
- 返回:
- 数字纪元值
-
isSupported
检查是否支持指定的字段。这将检查是否可以针对指定字段查询此纪元。如果为 false,则调用
range和get方法将抛出异常。如果该字段是一个
ChronoField那么查询就在这里实现。ERA字段返回 true。所有其他ChronoField实例将返回 false。如果该字段不是
ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor)传递this作为参数来获得此方法的结果。字段是否支持由字段决定。- 指定者:
isSupported在接口TemporalAccessor中- 参数:
field- 要检查的字段,null 返回 false- 返回:
- 如果这个时代支持该字段,则为 true,否则为 false
-
range
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。这个纪元用于增强返回范围的准确性。如果由于不支持该字段或其他原因而无法返回范围,则会抛出异常。
如果该字段是一个
ChronoField那么查询就在这里实现。ERA字段返回范围。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取范围由字段决定。默认实现必须为
ERA返回从零到一的范围,适用于两个纪元日历系统,例如 ISO。- 指定者:
range在接口TemporalAccessor中- 参数:
field- 查询范围的字段,不为空- 返回:
- 该字段的有效值范围,不为空
- 抛出:
DateTimeException- 如果无法获得该字段的范围UnsupportedTemporalTypeException- 如果不支持该单元
-
get
从这个时代获取指定字段的值作为int。这将查询此纪元以获取指定字段的值。返回值将始终在该字段的有效值范围内。如果由于不支持该字段或其他原因而无法返回该值,则会抛出异常。
如果该字段是一个
ChronoField那么查询就在这里实现。ERA字段返回纪元的值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取到该值,该值代表什么,由字段决定。- 指定者:
get在接口TemporalAccessor中- 参数:
field- 要获取的字段,不为空- 返回:
- 该字段的值
- 抛出:
DateTimeException- 如果无法获取该字段的值或该值超出该字段的有效值范围UnsupportedTemporalTypeException- 如果不支持该字段或值的范围超过intArithmeticException- 如果发生数字溢出
-
getLong
从这个时代获取指定字段的值作为long。这将查询此纪元以获取指定字段的值。如果由于不支持该字段或其他原因而无法返回该值,则会抛出异常。
如果该字段是一个
ChronoField那么查询就在这里实现。ERA字段返回纪元的值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)传递this作为参数来获得此方法的结果。能否获取到该值,该值代表什么,由字段决定。- 指定者:
getLong在接口TemporalAccessor中- 参数:
field- 要获取的字段,不为空- 返回:
- 该字段的值
- 抛出:
DateTimeException- 如果无法获得该字段的值UnsupportedTemporalTypeException- 如果不支持该字段ArithmeticException- 如果发生数字溢出
-
query
使用指定的查询查询此时代。这使用指定的查询策略对象查询此时代。
TemporalQuery对象定义了用于获取结果的逻辑。阅读查询文档以了解此方法的结果。此方法的结果是通过对指定查询调用
TemporalQuery.queryFrom(TemporalAccessor)方法并将this作为参数传递来获得的。- 指定者:
query在接口TemporalAccessor中- 类型参数:
R- 结果的类型- 参数:
query- 要调用的查询,不为空- 返回:
- 查询结果,可能返回null(由查询定义)
- 抛出:
DateTimeException- 如果无法查询(由查询定义)ArithmeticException- 如果发生数字溢出(由查询定义)
-
adjustInto
将指定的时间对象调整为与此对象具有相同的时代。这将返回一个与输入相同的可观察类型的时间对象,时代更改为与此相同。
调整相当于使用
Temporal.with(TemporalField, long)传递ChronoField.ERA作为字段。在大多数情况下,使用
Temporal.with(TemporalAdjuster)反转调用模式会更清楚:// these two lines are equivalent, but the second approach is recommended temporal = thisEra.adjustInto(temporal); temporal = temporal.with(thisEra);
此实例是不可变的,不受此方法调用的影响。
- 指定者:
adjustInto在接口TemporalAdjuster中- 参数:
temporal- 要调整的目标对象,不为空- 返回:
- 调整后的对象,不为空
- 抛出:
DateTimeException- 如果无法进行调整ArithmeticException- 如果发生数字溢出
-
getDisplayName
获取这个时代的文本表示。这将返回用于标识时代的文本名称,适合呈现给用户。参数控制返回文本的样式和locale。
如果未找到文本映射,则返回
numeric value。- API 注意:
- 此默认实现适用于大多数实现。
- 参数:
style- 所需文本的样式,不为空locale- 要使用的locale,不为空- 返回:
- 时代的文本值,不为空
-