- 所有超级接口:
-
TemporalAmount
- 所有已知实现类:
-
Period
此接口模拟了日历系统中的基于日期的时间量。虽然大多数日历系统使用年、月和日,但有些日历系统不使用。因此,此接口仅根据由Chronology
定义的一组支持的单位运行。对于给定的日历系统,支持的单位集是固定的。支持的单位的数量可以设置为零。
该期间被建模为有向时间量,这意味着期间的各个部分可能为负。
- 实现要求:
- 必须小心实现此接口,以确保其他类能够正确运行。所有可以实例化的实现必须是final、不可变和线程安全的。子类应尽可能可序列化。
- 自:
- 1.8
-
Method Summary
Modifier and TypeMethodDescription将此期间添加到指定的时间对象。static ChronoPeriod
between
(ChronoLocalDate startDateInclusive, ChronoLocalDate endDateExclusive) 获取由两个日期之间的时间量组成的ChronoPeriod
。boolean
检查此期间是否等于另一个期间,包括年表。long
get
(TemporalUnit unit) 获取请求单位的值。获取定义支持单位含义的年表。getUnits()
获取此期间支持的单位集。int
hashCode()
此期间的哈希码。default boolean
检查此期间的任何支持单位是否为负。default boolean
isZero()
检查此期间的所有支持单位是否为零。minus
(TemporalAmount amountToSubtract) 返回减去指定期间后的此期间的副本。multipliedBy
(int scalar) 返回将此期间中每个量乘以指定标量后的新实例。default ChronoPeriod
negated()
返回将此期间中每个量取反后的新实例。返回每个单位的数量已归一化的此期间的副本。plus
(TemporalAmount amountToAdd) 返回添加了指定期间后的此期间的副本。subtractFrom
(Temporal temporal) 从指定的时间对象中减去此期间。toString()
将此期间输出为String
。
-
Method Details
-
between
获取由两个日期之间的时间量组成的ChronoPeriod
。开始日期包括在内,但结束日期不包括在内。该期间是使用
ChronoLocalDate.until(ChronoLocalDate)
计算的。因此,计算是特定于年表的。第一个日期的年表被使用。第二个日期的年表被忽略,在计算开始之前,日期将被转换为目标年表系统。
如果结束日期在开始日期之前,则此方法的结果可能是负期间。在大多数情况下,支持字段中的正负号将是相同的。
- 参数:
-
startDateInclusive
- 开始日期(包括),指定计算的年表,不能为空 -
endDateExclusive
- 结束日期(不包括),在任何年表中,不能为空 - 返回:
- 此日期与结束日期之间的期间,不能为空
- 参见:
-
get
- 指定者:
-
get
在接口TemporalAmount
- 参数:
-
unit
- 要返回值的TemporalUnit
- 返回:
- 单位的长整型值
- 抛出:
-
DateTimeException
- 如果单位不受支持 -
UnsupportedTemporalTypeException
- 如果单位不受支持
-
getUnits
List<TemporalUnit> getUnits()获取此期间支持的单位集。支持的单位是特定于年表的。它们通常是
YEARS
、MONTHS
和DAYS
。它们按从大到小的顺序返回。此集合可与
get(TemporalUnit)
结合使用,以访问期间的整个状态。- 指定者:
-
getUnits
在接口TemporalAmount
- 返回:
- 包含支持单位的列表,不能为空
-
getChronology
Chronology getChronology()获取定义支持单位含义的年表。期间由年表定义。它控制支持的单位,并将加法/减法限制为相同年表的
ChronoLocalDate
实例。- 返回:
- 定义期间的年表,不能为空
-
isZero
default boolean isZero()检查此期间的所有支持单位是否为零。- 返回:
- 如果此期间为零长度,则为true
-
isNegative
default boolean isNegative()检查此期间的任何支持单位是否为负。- 返回:
- 如果此期间的任何单位为负,则为true
-
plus
返回添加了指定期间后的此期间的副本。如果指定的量是
ChronoPeriod
,则它必须与此期间具有相同的年表。实现可以选择接受或拒绝其他TemporalAmount
实现。此实例是不可变的,并且不受此方法调用的影响。
- 参数:
-
amountToAdd
- 要添加的期间,不能为空 - 返回:
-
基于此期间的
ChronoPeriod
,其中添加了请求的期间,不能为空 - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minus
返回减去指定期间后的此期间的副本。如果指定的量是
ChronoPeriod
,则它必须与此期间具有相同的年表。实现可以选择接受或拒绝其他TemporalAmount
实现。此实例是不可变的,并且不受此方法调用的影响。
- 参数:
-
amountToSubtract
- 要减去的期间,不能为空 - 返回:
-
基于此期间的
ChronoPeriod
,其中减去了请求的期间,不能为空 - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
multipliedBy
返回将此期间中每个量乘以指定标量后的新实例。这将返回一个每个支持单位单独乘以的期间。例如,"2年、-3个月和4天"的期间乘以3将返回"6年、-9个月和12天"。不执行归一化。
- 参数:
-
scalar
- 要乘以的标量,不能为空 - 返回:
-
基于此期间的
ChronoPeriod
,其中每个量都乘以标量,不能为空 - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
negated
返回将此期间中每个量取反后的新实例。这将返回一个每个支持单位单独取反的期间。例如,"2年、-3个月和4天"的期间将被取反为"-2年、3个月和-4天"。不执行归一化。
- 返回:
-
基于此期间的
ChronoPeriod
,其中每个量都取反,不能为空 - 抛出:
-
ArithmeticException
- 如果发生数值溢出,仅在其中一个单位的值为Long.MIN_VALUE
时才会发生
-
normalized
ChronoPeriod normalized()返回每个单位的数量已归一化的此期间的副本。此实例是不可变的,并且不受此方法调用的影响。
- 返回:
-
基于此期间的
ChronoPeriod
,其中每个单位的数量已归一化,不能为空 - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
addTo
将此期间添加到指定的时间对象。Temporal.plus(TemporalAmount)
来反转调用模式更清晰。// 这两行是等效的,但推荐第二种方法 dateTime = thisPeriod.addTo(dateTime); dateTime = dateTime.plus(thisPeriod);
- 指定者:
-
addTo
在接口TemporalAmount
中 - 参数:
-
temporal
- 要调整的时间对象,不能为空 - 返回值:
- 调整后的相同类型的对象,不能为空
- 抛出:
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数值溢出
-
subtractFrom
从指定的时间对象中减去这段时间。返回一个与输入相同可观察类型的时间对象,减去了这段时间。
在大多数情况下,通过使用
Temporal.minus(TemporalAmount)
来反转调用模式更清晰。// 这两行是等价的,但推荐第二种方法 dateTime = thisPeriod.subtractFrom(dateTime); dateTime = dateTime.minus(thisPeriod);
指定的时间对象必须与这段时间具有相同的年表。返回一个减去非零支持单位的时间对象。
此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
subtractFrom
在接口TemporalAmount
中 - 参数:
-
temporal
- 要调整的时间对象,不能为空 - 返回值:
- 调整后的相同类型的对象,不能为空
- 抛出:
-
DateTimeException
- 如果无法减去 -
ArithmeticException
- 如果发生数值溢出
-
equals
检查此段时间是否等于另一段时间,包括年表。将此段时间与另一段时间进行比较,确保类型、每个数量和年表都相同。请注意,这意味着“15个月”的时间段不等于“1年零3个月”的时间段。
-
hashCode
int hashCode()此段时间的哈希码。 -
toString
String toString()将此段时间输出为一个String
。输出将包括时间段数量和年表。
-