- 所有父级接口:
TemporalAmount
- 所有已知的实现类:
Period
该接口对日历系统中基于日期的时间量进行建模。虽然大多数日历系统使用年、月和日,但有些系统不使用。因此,此接口仅根据 Chronology 定义的一组受支持的单元运行。对于给定的时间顺序,支持的单位集是固定的。支持单位的数量可以设置为零。
该周期被建模为有针对性的时间量,这意味着该周期的各个部分可能为负数。
- 实现要求:
- 必须小心实现此接口以确保其他类正确运行。所有可以实例化的实现都必须是最终的、不可变的和线程安全的。只要有可能,子类就应该是可序列化的。
- 自从:
- 1.8
-
方法总结
修饰符和类型方法描述将此期间添加到指定的时间对象。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。
-
方法详情
-
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()检查此期间的所有支持单位是否为零。- 返回:
- 如果此期间为零长度,则为真
-
isNegative
default boolean isNegative()检查此期间的任何支持单位是否为负数。- 返回:
- 如果此期间的任何单位为负,则为真
-
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()返回此期间的副本,其中每个单位的数量已标准化。规范化过程特定于每个日历系统。例如,在 ISO 日历系统中,年和月被规范化,但日期没有规范化,这样“15 个月”将被规范化为“1 年零 3 个月”。
此实例是不可变的,不受此方法调用的影响。
- 返回:
ChronoPeriod基于此期间,每个单位的金额已归一化,不为空- 抛出:
ArithmeticException- 如果发生数字溢出
-
addTo
将此期间添加到指定的时间对象。这将返回一个与输入相同的可观察类型的时间对象,并添加了这个时间段。
在大多数情况下,使用
Temporal.plus(TemporalAmount)反转调用模式会更清楚。// these two lines are equivalent, but the second approach is recommended dateTime = thisPeriod.addTo(dateTime); dateTime = dateTime.plus(thisPeriod);
指定的时间必须与此期间具有相同的年表。这将返回一个添加了非零支持单位的时间。
此实例是不可变的,不受此方法调用的影响。
- 指定者:
addTo在接口TemporalAmount中- 参数:
temporal- 要调整的时间对象,不为空- 返回:
- 进行了调整的同一类型的对象,不为空
- 抛出:
DateTimeException- 如果无法添加ArithmeticException- 如果发生数字溢出
-
subtractFrom
从指定的时间对象中减去这个周期。这将返回与减去此周期的输入具有相同可观察类型的时间对象。
在大多数情况下,使用
Temporal.minus(TemporalAmount)反转调用模式会更清楚。// these two lines are equivalent, but the second approach is recommended dateTime = thisPeriod.subtractFrom(dateTime); dateTime = dateTime.minus(thisPeriod);
指定的时间必须与此期间具有相同的年表。这将返回一个减去非零支持单位的时间。
此实例是不可变的,不受此方法调用的影响。
- 指定者:
subtractFrom在接口TemporalAmount中- 参数:
temporal- 要调整的时间对象,不为空- 返回:
- 进行了调整的同一类型的对象,不为空
- 抛出:
DateTimeException- 如果无法减去ArithmeticException- 如果发生数字溢出
-
equals
检查这个时期是否等于另一个时期,包括年表。将这个时期与另一个时期进行比较,确保类型、每个数量和年代是相同的。请注意,这意味着“15 个月”的期限不等于“1 年零 3 个月”的期限。
-
hashCode
int hashCode()此期间的哈希码。 -
toString
String toString()将此期间输出为String。输出将包括期间金额和年表。
-