- 所有超级接口:
-
TemporalAmount
- 所有已知实现类:
-
Period
此接口模拟了日历系统中的基于日期的时间量。虽然大多数日历系统使用年、月和日,但有些日历系统不使用。因此,此接口仅根据由Chronology定义的一组支持的单位运行。对于给定的日历系统,支持的单位集是固定的。支持的单位的数量可以设置为零。
该期间被建模为有向时间量,这意味着期间的各个部分可能为负。
- 实现要求:
- 必须小心实现此接口,以确保其他类能够正确运行。所有可以实例化的实现必须是final、不可变和线程安全的。子类应尽可能可序列化。
- 自:
- 1.8
-
Method Summary
Modifier and TypeMethodDescription将此期间添加到指定的时间对象。static ChronoPeriodbetween(ChronoLocalDate startDateInclusive, ChronoLocalDate endDateExclusive) 获取由两个日期之间的时间量组成的ChronoPeriod。boolean检查此期间是否等于另一个期间,包括年表。longget(TemporalUnit unit) 获取请求单位的值。获取定义支持单位含义的年表。getUnits()获取此期间支持的单位集。inthashCode()此期间的哈希码。default boolean检查此期间的任何支持单位是否为负。default booleanisZero()检查此期间的所有支持单位是否为零。minus(TemporalAmount amountToSubtract) 返回减去指定期间后的此期间的副本。multipliedBy(int scalar) 返回将此期间中每个量乘以指定标量后的新实例。default ChronoPeriodnegated()返回将此期间中每个量取反后的新实例。返回每个单位的数量已归一化的此期间的副本。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。输出将包括时间段数量和年表。
-