public interface TemporalAmount
这是时间量的基本界面类型。 数额与日期或时间不同,因为它不与时间线上的任何特定点相关。
量可以被认为是Map
的TemporalUnit
至long
,经由暴露getUnits()
和get(TemporalUnit)
。 一个简单的情况可能有一个单位值对,例如“6小时”。 更复杂的情况可能有多个单位价值对,例如“7年,3个月和5天”。
有两个常见的实现。 Period
是一个基于日期的实现,存储年,月和日。 Duration
是基于时间的实现,存储秒和纳秒,但是使用其他持续时间的单位(如分钟,小时和固定的24小时天)提供一些访问。
该接口是一个框架级接口,不应该在应用程序代码中广泛使用。 相反,应用程序应该创建并传递具体类型的Period
,例如Period
和Duration
。
Modifier and Type | Method and Description |
---|---|
Temporal |
addTo(Temporal temporal)
添加到指定的时间对象。
|
long |
get(TemporalUnit unit)
返回请求的单位的值。
|
List<TemporalUnit> |
getUnits()
返回唯一定义此TemporalAmount值的单位列表。
|
Temporal |
subtractFrom(Temporal temporal)
从指定的时间对象中减去此对象。
|
long get(TemporalUnit unit)
getUnits()
的单位的支持。
通常,为了方便开发人员,实施将定义额外的单位作为转换。
unit
- 为其返回值的
TemporalUnit
DateTimeException
- 如果无法获取该单位的值
UnsupportedTemporalTypeException
-如果
unit
不支持
List<TemporalUnit> getUnits()
TemporalUnits
的列表由实现类定义。
该列表是当时getUnits
被调用并且不可变的单元的快照。
单位从最长的持续时间到单位的最短持续时间。
TemporalUnits
;
不为空
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
DateTimeException
- 如果无法添加
ArithmeticException
- 如果发生数字溢出
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)
,因为在代码中阅读更清楚。
Temporal
上的任何方法查询时间对象并执行减法。
返回的对象必须具有与输入对象相同的可观察类型
输入对象不能更改。 相反,必须退还原件的调整副本。 这为不可变和可变的时间对象提供了相当的安全行为。
输入的时间对象可以在不同于ISO的日历系统中。 实现可以选择记录与其他日历系统的兼容性,或者通过querying the chronology
拒绝非ISO临时对象。
可以从多个并行线程调用此方法。 调用时必须是线程安全的。
temporal
- 从时间对象中减去金额,而不是null
DateTimeException
- 如果不能减去
ArithmeticException
- 如果发生数字溢出