-
- All Superinterfaces:
-
TemporalAmount
- 所有已知实现类:
-
Period
public interface ChronoPeriod extends TemporalAmount
用于高级全球化用例的基于日期的时间量,例如任意年表中的“3年,4个月和5天”。此界面模拟日历系统中基于日期的时间量。 虽然大多数日历系统使用数年,数月和数天,但有些则没有。 因此,该接口仅根据由
Chronology
定义的一组受支持单元进行Chronology
。 对于给定的年表,支持的单位集是固定的。 支持的单位的数量可以设置为零。该时期被建模为指示的时间量,意味着该时期的各个部分可能是负的。
- 实现要求:
- 必须小心实现此接口,以确保其他类正常运行。 可以实例化的所有实现必须是最终的,不可变的和线程安全的。 只要有可能,子类应该是Serializable。
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 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
- 开始日期(包括),指定计算的时间顺序,而不是null -
endDateExclusive
- 结束日期,独家,在任何年代表中,不为空 - 结果
- 此日期和结束日期之间的时间段,不为空
- 另请参见:
-
ChronoLocalDate.until(ChronoLocalDate)
-
get
long get(TemporalUnit unit)
- Specified by:
-
get
in interfaceTemporalAmount
- 参数
-
unit
- 要为其返回值的TemporalUnit
- 结果
- 单位的长期价值
- 异常
-
DateTimeException
- 如果不支持该装置 -
UnsupportedTemporalTypeException
- 如果不支持该装置
-
getUnits
List<TemporalUnit> getUnits()
获取此句点支持的单位集。支持的单位是按时间顺序排列的。 他们通常是
YEARS
,MONTHS
和DAYS
。 它们按从大到小的顺序返回。此组可与
get(TemporalUnit)
结合使用以访问整个期间的状态。- Specified by:
-
getUnits
接口TemporalAmount
- 结果
- 包含受支持单位的列表,不为null
-
getChronology
Chronology getChronology()
获取定义支持单位含义的年表。期间由年表定义。 它控制支持的单位并限制对同一年表的
ChronoLocalDate
实例的加/减。- 结果
- 定义期间的年表,不是空的
-
isZero
default boolean isZero()
检查此期间的所有受支持单位是否为零。- 结果
- 如果此期间为零长度,则为true
-
isNegative
default boolean isNegative()
检查此期间支持的任何单位是否为负数。- 结果
- 如果此期间的任何单位为负数,则为true
-
plus
ChronoPeriod plus(TemporalAmount amountToAdd)
返回此期间的副本,并添加指定的期间。如果指定的金额是
ChronoPeriod
那么它必须具有与此期间相同的年表。 实现可以选择接受或拒绝其他TemporalAmount
实现。此实例是不可变的,不受此方法调用的影响。
- 参数
-
amountToAdd
- 要添加的期间,而不是空 - 结果
-
基于此期间的
ChronoPeriod
,其中添加了请求的期间,而不是空 - 异常
-
ArithmeticException
- 如果发生数字溢出
-
minus
ChronoPeriod minus(TemporalAmount amountToSubtract)
返回此期间的副本,并减去指定的期间。如果指定的金额是
ChronoPeriod
那么它必须具有与此期间相同的年表。 实现可以选择接受或拒绝其他TemporalAmount
实现。此实例是不可变的,不受此方法调用的影响。
- 参数
-
amountToSubtract
- 要减去的期间,而不是空 - 结果
-
基于此期间的
ChronoPeriod
,请求的时间段减去,不为空 - 异常
-
ArithmeticException
- 如果发生数字溢出
-
multipliedBy
ChronoPeriod multipliedBy(int scalar)
返回一个新实例,此期间此时间段内的每个金额乘以指定的标量。这将返回一个句点,每个支持的单位单独相乘。 例如,“2年,3个月和4天”的时间乘以3将返回“6年,-9个月和12天”。 不执行规范化。
- 参数
-
scalar
- 要乘以的标量,而不是空值 - 结果
-
基于此期间的
ChronoPeriod
,其数量乘以标量,而不是空 - 异常
-
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
- 要调整的时态对象,而不是null - 结果
- 进行调整的相同类型的对象,不为空
- 异常
-
DateTimeException
- 如果无法减去 -
ArithmeticException
- 如果发生数字溢出
-
equals
boolean equals(Object obj)
检查此期间是否等于另一个期间,包括年表。将此期间与另一期间进行比较,确保类型,每个金额和年表都相同。 请注意,这意味着“15个月”的时段不等于“1年3个月”的时段。
- 重写:
-
equals
在课程Object
- 参数
-
obj
- 要检查的对象,null返回false - 结果
- 如果这等于另一个时期,则为true
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
int hashCode()
此期间的哈希码。- 重写:
-
hashCode
,课程Object
- 结果
- 合适的哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-