-
- All Superinterfaces:
-
TemporalAmount
- 所有已知实现类:
-
Period
public interface ChronoPeriod extends TemporalAmount
基于日期的时间,例如任意年代的“3年,4个月和5天”,旨在用于高级全球化用例。该接口在日历系统中建模基于日期的时间量。 虽然大多数日历系统使用几年,几个月和几天,但有些不是。 因此,此接口仅由
Chronology
定义的一组受支持单元进行Chronology
。 一组支持的单位是固定的给定的年表。 受支持单元的数量可以设置为零。这个时期被模拟为一定的时间量,这意味着该时期的各个部分可能是负面的。
- 实现要求:
- 该接口必须小心实施,以确保其他类正确运行。 可以实例化的所有实现必须是最终的,不可变的和线程安全的。 子类应尽可能可序列化。
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 Temporal
addTo(Temporal temporal)
将此时段添加到指定的时间对象。static ChronoPeriod
between(ChronoLocalDate startDateInclusive, ChronoLocalDate endDateExclusive)
获得一个ChronoPeriod
包括两个日期之间的时间量。boolean
equals(Object obj)
检查这个时期是否等于另一个时期,包括年表。long
get(TemporalUnit unit)
获取所请求单元的值。Chronology
getChronology()
获取定义支持的单位意义的年表。List<TemporalUnit>
getUnits()
获取此期间支持的单位集。int
hashCode()
此期间的哈希码。default boolean
isNegative()
检查此期间的受支持单位是否为负。default boolean
isZero()
检查此期间所有受支持的单位是否为零。ChronoPeriod
minus(TemporalAmount amountToSubtract)
返回此期间的副本,并减去指定的时间段。ChronoPeriod
multipliedBy(int scalar)
返回一个新的实例,其中在此期间的每个金额乘以指定的标量。default ChronoPeriod
negated()
返回一个新的实例,每个金额在此期间被否定。ChronoPeriod
normalized()
返回此期间的副本,并将每个单位的金额归一化。ChronoPeriod
plus(TemporalAmount amountToAdd)
返回指定期间添加的此期间的副本。Temporal
subtractFrom(Temporal temporal)
从指定的时间对象中减去这个时间段。String
toString()
将此期间输出为String
。
-
-
-
方法详细信息
-
between
static ChronoPeriod between(ChronoLocalDate startDateInclusive, ChronoLocalDate endDateExclusive)
获得一个ChronoPeriod
包括两个日期之间的时间量。包含开始日期,但结束日期不是。 期间使用
ChronoLocalDate.until(ChronoLocalDate)
计算。 因此,计算是具体的年表。使用第一个日期的年表。 第二个日期的年表被忽略,在计算开始之前将日期转换为目标年表系统。
如果结束在开始之前,该方法的结果可以是负期。 在大多数情况下,每个支持的字段中的正/负号将相同。
- 参数
-
startDateInclusive
- 指定计算年表的开始日期,不为空 -
endDateExclusive
- 结束日期,排除,任何年表,不为空 - 结果
- 此日期与结束日期之间的期间不为空
- 另请参见:
-
ChronoLocalDate.until(ChronoLocalDate)
-
get
long get(TemporalUnit unit)
- Specified by:
-
get
在接口TemporalAmount
- 参数
-
unit
- 要为其返回值的TemporalUnit
- 结果
- 单位的长期价值
- 异常
-
DateTimeException
- 如果不支持本机 -
UnsupportedTemporalTypeException
- 如果不支持本机
-
getUnits
List<TemporalUnit> getUnits()
获取此期间支持的单位集。受支持的单位是具体的年表。 他们通常是
YEARS
,MONTHS
和DAYS
。 他们从最大到最小的顺序返回。该集合可以与
get(TemporalUnit)
一起使用以访问整个期间的状态。- Specified by:
-
getUnits
在接口TemporalAmount
- 结果
- 包含支持的单位的列表,不为空
-
getChronology
Chronology getChronology()
获取定义支持的单位意义的年表。这个时期是按年表定义的。 它控制支持的单位,并限制相同年代的
ChronoLocalDate
实例的加/减。- 结果
- 定义期间的年表,不为空
-
isZero
default boolean isZero()
检查此期间所有受支持的单位是否为零。- 结果
- 如果这个时期是零长度,则为真
-
isNegative
default boolean isNegative()
检查此期间的受支持单位是否为负。- 结果
- 如果这个时期的任何一个单位都是负数,则为真
-
plus
ChronoPeriod plus(TemporalAmount amountToAdd)
返回指定期间添加的此期间的副本。如果指定的金额是
ChronoPeriod
那么它必须与这个时期有相同的年表。 实施可能会选择接受或拒绝其他TemporalAmount
实现。此实例是不可变的,不受此方法调用的影响。
- 参数
-
amountToAdd
- 添加时间,不为空 - 结果
-
一个
ChronoPeriod
基于此期间添加的请求期,不为null - 异常
-
ArithmeticException
- 如果发生数字溢出
-
minus
ChronoPeriod minus(TemporalAmount amountToSubtract)
返回此期间的副本,并减去指定的时间段。如果指定的金额是
ChronoPeriod
那么它必须与这个时期有相同的年表。 实施可以选择接受或拒绝其他TemporalAmount
实现。此实例是不可变的,不受此方法调用的影响。
- 参数
-
amountToSubtract
- 扣除的时间,不为空 - 结果
-
一个
ChronoPeriod
基于此期间减去所请求的周期,不为null - 异常
-
ArithmeticException
- 如果发生数字溢出
-
multipliedBy
ChronoPeriod multipliedBy(int scalar)
返回一个新的实例,其中在此期间的每个金额乘以指定的标量。这返回一个周期,每个支持的单位分别乘以。 例如,“2年-3个月4天”乘以3将返回“6年-9个月12天”。 不执行归一化。
- 参数
-
scalar
- 要乘以的标量,不为空 - 结果
-
一个
ChronoPeriod
基于这个时期,数量乘以标量,不为null - 异常
-
ArithmeticException
- 如果发生数字溢出
-
negated
default ChronoPeriod negated()
返回一个新的实例,每个金额在此期间被否定。这返回一个期间,每个受支持的单位被单独否定。 例如,“2年-3个月4天”将被否定为“-2年3个月-4日”。 不执行归一化。
- 结果
-
一个
ChronoPeriod
基于这个时期,金额被否定,不为零 - 异常
-
ArithmeticException
- 如果发生数字溢出,仅在其中一个单位的值为Long.MIN_VALUE
-
normalized
ChronoPeriod normalized()
返回此期间的副本,并将每个单位的金额归一化。标准化过程特定于每个日历系统。 例如,在ISO日历系统中,这几年和几个月是正常化的,但日子不是这样,“15个月”将被归一化为“1年3个月”。
此实例是不可变的,不受此方法调用的影响。
- 结果
-
一个
ChronoPeriod
基于这个时期,每个单位的数量标准化,不为零 - 异常
-
ArithmeticException
- 如果发生数字溢出
-
addTo
Temporal addTo(Temporal temporal)
将此时段添加到指定的时间对象。这返回与添加了此周期的输入相同的可观察类型的时间对象。
在大多数情况下,通过使用
Temporal.plus(TemporalAmount)
来更正呼叫模式。// these two lines are equivalent, but the second approach is recommended dateTime = thisPeriod.addTo(dateTime); dateTime = dateTime.plus(thisPeriod);
指定的时间必须与这个时期有相同的年表。 这返回了添加了非零支持单位的时间。
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
addTo
在接口TemporalAmount
- 参数
-
temporal
- 要调整的时间对象,不为null - 结果
- 与调整相同类型的对象,不为空
- 异常
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数字溢出
-
subtractFrom
Temporal subtractFrom(Temporal temporal)
从指定的时间对象中减去这个时间段。这返回与减去该周期的输入相同的可观察类型的时间对象。
在大多数情况下,通过使用
Temporal.minus(TemporalAmount)
来更正呼叫模式。// these two lines are equivalent, but the second approach is recommended dateTime = thisPeriod.subtractFrom(dateTime); dateTime = dateTime.minus(thisPeriod);
指定的时间必须与这个时期有相同的年表。 这返回一个时间,减去非零支持的单位。
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
subtractFrom
在接口TemporalAmount
- 参数
-
temporal
- 要调整的时间对象,不为空 - 结果
- 与调整相同类型的对象,不为空
- 异常
-
DateTimeException
- 如果不能减去 -
ArithmeticException
- 如果发生数字溢出
-
equals
boolean equals(Object obj)
检查这个时期是否等于另一个时期,包括年表。将这个时期与另一个时期进行比较,确保类型,每个数量和年表是相同的。 请注意,这意味着“15个月”不等于“1年3个月”。
- 重写:
-
equals
在Object
- 参数
-
obj
- 要检查的对象,null返回false - 结果
- 如果这等于其他时期,则为真
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
int hashCode()
此期间的哈希码。- 重写:
-
hashCode
在Object
- 结果
- 一个合适的哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-