模块  java.base
软件包  java.time.chrono

Interface ChronoPeriod

  • All Superinterfaces:
    TemporalAmount
    所有已知实现类:
    Period

    public interface ChronoPeriod
    extends TemporalAmount
    用于高级全球化用例的基于日期的时间量,例如任意年表中的“3年,4个月和5天”。

    此界面模拟日历系统中基于日期的时间量。 虽然大多数日历系统使用数年,数月和数天,但有些则没有。 因此,该接口仅根据由Chronology定义的一组受支持单元进行Chronology 对于给定的年表,支持的单位集是固定的。 支持的单位的数量可以设置为零。

    该时期被建模为指示的时间量,意味着该时期的各个部分可能是负的。

    实现要求:
    必须小心实现此接口,以确保其他类正常运行。 可以实例化的所有实现必须是最终的,不可变的和线程安全的。 只要有可能,子类应该是Serializable。
    从以下版本开始:
    1.8
    • 方法详细信息

      • between

        static ChronoPeriod between​(ChronoLocalDate startDateInclusive,
                                    ChronoLocalDate endDateExclusive)
        获得ChronoPeriod包括两个日期之间的时间量。

        包括开始日期,但结束日期不包括在内。 期间使用ChronoLocalDate.until(ChronoLocalDate)计算。 因此,计算是按时间顺序排列的。

        使用第一个日期的年表。 忽略第二个日期的年表,在计算开始之前将日期转换为目标年表系统。

        如果结束在开始之前,则该方法的结果可以是负周期。 在大多数情况下,每个支持的字段中的正/负符号都是相同的。

        参数
        startDateInclusive - 开始日期(包括),指定计算的时间顺序,而不是null
        endDateExclusive - 结束日期,独家,在任何年代表中,不为空
        结果
        此日期和结束日期之间的时间段,不为空
        另请参见:
        ChronoLocalDate.until(ChronoLocalDate)
      • getUnits

        List<TemporalUnit> getUnits()
        获取此句点支持的单位集。

        支持的单位是按时间顺序排列的。 他们通常是YEARSMONTHSDAYS 它们按从大到小的顺序返回。

        此组可与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
      • toString

        String toString()
        将此期间输出为String

        输出将包括期间金额和年表。

        重写:
        toString在课程 Object
        结果
        此期间的字符串表示形式,不为null