-
- All Known Subinterfaces:
-
ChronoPeriod
public interface TemporalAmount
定义时间量的框架级界面,例如“6小时”,“8天”或“2年3个月”。这是时间量的基本接口类型。 金额与日期或时间不同,因为它与时间线上的任何特定点无关。
量可以被认为是
Map
的TemporalUnit
至long
,经由暴露getUnits()
和get(TemporalUnit)
。 一个简单的案例可能只有一个单位 - 值对,例如“6小时”。 更复杂的情况可能有多个单位 - 价值对,例如“7年,3个月和5天”。有两种常见的实现方式。
Period
是基于日期的实现,存储年,月和日。Duration
是一个基于时间的实现,存储秒和纳秒,但使用其他基于持续时间的单位(如分钟,小时和固定的24小时工作日)提供一些访问。此接口是框架级接口,不应在应用程序代码中广泛使用。 相反,应用程序应创建并传递具体类型的实例,例如
Period
和Duration
。- 实现要求:
- 此接口对实现的可变性没有任何限制,但强烈建议使用不变性。
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 Temporal
addTo(Temporal temporal)
添加到指定的时态对象。long
get(TemporalUnit unit)
返回所请求单位的值。List<TemporalUnit>
getUnits()
返回唯一定义此TemporalAmount值的单元列表。Temporal
subtractFrom(Temporal temporal)
从指定的时态对象中减去此对象。
-
-
-
方法详细信息
-
get
long get(TemporalUnit unit)
- 实现要求:
-
实施可以声明对
getUnits()
未列出的单位的支持。 通常,为了方便开发人员,实现会将其他单位定义为转换。 - 参数
-
unit
- 要返回值的TemporalUnit
- 结果
- 单位的长期价值
- 异常
-
DateTimeException
- 如果无法获得单位的值 -
UnsupportedTemporalTypeException
- 如果不支持unit
-
getUnits
List<TemporalUnit> getUnits()
返回唯一定义此TemporalAmount值的单元列表。TemporalUnits
的列表由实现类定义。 该列表是调用getUnits
单位的快照,不可变。 单位从最长持续时间到最短持续时间订购。- 实现要求:
- 单元列表完全唯一地表示对象的状态,没有遗漏,重叠或重复。 单位是从最长到最短的顺序。
- 结果
-
TemporalUnits
的清单; 不是空的
-
addTo
Temporal addTo(Temporal temporal)
添加到指定的时态对象。使用实现类中封装的逻辑将数量添加到指定的时态对象。
使用此方法有两种等效方法。 第一种是直接调用此方法。 第二种是使用
Temporal.plus(TemporalAmount)
:// These two lines are equivalent, but the second approach is recommended dateTime = amount.addTo(dateTime); dateTime = dateTime.plus(adder);
建议使用第二种方法plus(TemporalAmount)
,因为在代码中读取更加清晰。- 实现要求:
-
实现必须获取输入对象并添加到它。
实现定义了添加的逻辑,并负责记录该逻辑。
它可以使用
Temporal
上的任何方法来查询时态对象并执行添加。 返回的对象必须具有与输入对象相同的可观察类型不得更改输入对象。 相反,必须返回原始的调整副本。 这为不可变和可变的时态对象提供了等效的安全行为。
输入时间对象可以在除ISO之外的日历系统中。 实现可以选择记录与其他日历系统的兼容性,或者通过
querying the chronology
拒绝非ISO时态对象。可以从多个线程并行调用此方法。 调用时必须是线程安全的。
- 参数
-
temporal
- 要添加金额的时间对象,而不是null - 结果
- 具有相同可观察类型的对象,并且不是null
- 异常
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数字溢出
-
subtractFrom
Temporal subtractFrom(Temporal temporal)
从指定的时态对象中减去此对象。使用实现类中封装的逻辑从指定的时态对象中减去量。
使用此方法有两种等效方法。 第一种是直接调用此方法。 第二个是使用
Temporal.minus(TemporalAmount)
:// these two lines are equivalent, but the second approach is recommended dateTime = amount.subtractFrom(dateTime); dateTime = dateTime.minus(amount);
建议使用第二种方法minus(TemporalAmount)
,因为在代码中读取要清楚minus(TemporalAmount)
。- 实现要求:
-
实现必须获取输入对象并从中减去。
实现定义了减法的逻辑,并负责记录该逻辑。
它可以使用
Temporal
上的任何方法来查询时间对象并执行减法。 返回的对象必须具有与输入对象相同的可观察类型不得更改输入对象。 相反,必须返回原始的调整副本。 这为不可变和可变的时态对象提供了等效的安全行为。
输入时间对象可以在除ISO之外的日历系统中。 实现可以选择记录与其他日历系统的兼容性,或者通过
querying the chronology
拒绝非ISO时态对象。可以从多个线程并行调用此方法。 调用时必须是线程安全的。
- 参数
-
temporal
- 要从中减去数量的时间对象,而不是null - 结果
- 具有减法的相同可观察类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法减去 -
ArithmeticException
- 如果发生数字溢出
-
-