public interface TemporalUnit
测量时间是建立在单位,如年,月,日,小时,分钟和秒。此接口的实现表示这些单位。
此接口的一个实例表示单元本身,而不是单元的数量。看到一个类来表示在普通单位的数量Period
。
最常用的单位是指在ChronoUnit
。进一步的单位提供在IsoFields
。也可以通过实现此接口编写应用程序代码编写的。
使用双调度的单位。客户端代码调用一个日期时间像LocalDateTime
检查方法如果单位是一个ChronoUnit
。如果是,那么日期时间必须处理它。否则,该方法调用将被重新发送到该接口中的匹配方法中。
Modifier and Type | Method and Description |
---|---|
<R extends Temporal> |
addTo(R temporal, long amount)
返回指定的时间对象的副本,添加指定的时间。
|
long |
between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)
计算两个时间对象之间的时间量。
|
Duration |
getDuration()
获取此单元的持续时间,这可能是一个估计值。
|
boolean |
isDateBased()
检查该单位是否代表日期的一个组件。
|
boolean |
isDurationEstimated()
检查该单位的持续时间是否是一个估计。
|
default boolean |
isSupportedBy(Temporal temporal)
检查该单位是否被指定的时间对象支持。
|
boolean |
isTimeBased()
检查这个单位是否代表一个时间的一个组成部分。
|
String |
toString()
获取单元的描述性名称。
|
Duration getDuration()
所有单位返回时间测量标准纳秒从这个方法。持续时间将是积极的和非零的。例如,一个小时已经持续60 * 60 * 1,000,000,000ns
。
有些单位可能会返回一个准确的时间,而其他人则返回一个估计。例如,天有一个估计的持续时间,由于日光节约时间的变化的可能性。确定时间的估计,使用isDurationEstimated()
。
boolean isDurationEstimated()
所有单位都有一个持续时间,但是持续时间并不总是准确的。例如,天有一个估计的持续时间,由于日光节约时间的变化的可能性。如果持续时间是一个估计和错误,如果它是准确的,这种方法返回。请注意,准确/估计忽略了跳跃秒。
boolean isDateBased()
日期时间是否可意味着从一个日期的意义。它必须有一个duration是一标准节长度的整数倍。请注意,对于isDateBased()
和isTimeBased()
返回错误它是有效的,比如当代表一个单位的36个小时。
boolean isTimeBased()
一个单位时间如果可以意味着从时间的意义。它必须有一个duration分成标准节长度无余。请注意,对于isDateBased()
和isTimeBased()
返回错误它是有效的,比如当代表一个单位的36个小时。
default boolean isSupportedBy(Temporal temporal)
此检查,执行日期时间可以添加/减去此单元。这可以用来避免抛出一个异常。
这是用Temporal.plus(long, TemporalUnit)
默认实现的价值。
temporal
-检查时间的对象,不为空
<R extends Temporal> R addTo(R temporal, long amount)
增加的周期是这个单位的倍数。例如,该方法可以用于在表示“日期”的实例上添加“3天”,表示“日期”,通过日期和期间“3”。被添加的期间可能是负的,这是相当于减法。
使用这种方法有两个等效的方法。首先是直接调用这个方法。二是用Temporal.plus(long, TemporalUnit)
:
这两条线是等价的,但第二种方法是建议时间=补充(时间)的经验;时间=时间+(经验);建议使用第二种方法,
plus(TemporalUnit)
,因为它是一个更清晰的读码。
实现应该执行任何查询或计算使用单位可在ChronoUnit
或ChronoField
可用字段。如果单位不支持UnsupportedTemporalTypeException
必须扔。
实现不能更改指定的时间对象。相反,必须返回原始的调整副本。这提供了等效,为不变的和可变的实现安全的行为。
R
-时空对象的类型
temporal
-调整时间的对象,不为空
amount
-添加本单位的数量,阳性或阴性
DateTimeException
如果期间不能添加
UnsupportedTemporalTypeException
-如果没有单位的由颞支
long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)
这计算该单位的金额。开始和结束点是作为时间对象提供的,必须是兼容类型的。实现将在计算量之前将第二类型转换为第一类型的实例。结果将是负的,如果结束之前开始。例如,在两个时空对象之间的时间量可以计算出使用HOURS.between(startTime, endTime)
。
计算返回一个整数,表示两世间万物之间的完整的单元数。例如,在时间之间的时间11:30和13:29量将只有一个小时,因为它是短暂的两小时一分钟。
使用这种方法有两个等效的方法。首先是直接调用这个方法。二是用Temporal.until(Temporal, TemporalUnit)
:
这两条线是等价的间=经验。之间(开始、结束);间=开始直到(最后的经验);的选择应基于使得代码更易读。
例如,该方法允许计算两个日期之间的天数:
长天=天之间(开始、结束);或替代长天=开始。直到(最后一天);
实现应该执行任何查询或计算使用单位可在ChronoUnit
或可在ChronoField
领域。如果单位不支持UnsupportedTemporalTypeException
必须扔。实现不能更改指定的时间对象。
getClass()
。如果他们不这样做,那么结果必须通过调用
temporal1Inclusive.until(temporal2Exclusive, this)
获得。
temporal1Inclusive
-基础时态对象,不为空
temporal2Exclusive
-其他时态对象,排斥,不为空
DateTimeException
如果金额无法计算,或结束时间不能转换为类型为起始时间相同
UnsupportedTemporalTypeException
-如果没有单位的由颞支
ArithmeticException
如果数值溢出时
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.