Module  java.base
软件包  java.time.chrono

Interface ChronoPeriod

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


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

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

    这个时期被模拟为一定的时间量,这意味着该时期的各个部分可能是负面的。

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

      • between

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

        包含开始日期,但结束日期不是。 期间使用ChronoLocalDate.until(ChronoLocalDate)计算。 因此,计算是具体的年表。

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

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

        参数
        startDateInclusive - 指定计算年表的开始日期,不为空
        endDateExclusive - 结束日期,排除,任何年表,不为空
        结果
        此日期与结束日期之间的期间不为空
        另请参见:
        ChronoLocalDate.until(ChronoLocalDate)
      • getUnits

        List<TemporalUnit> getUnits​()
        获取此期间支持的单位集。

        受支持的单位是具体的年表。 他们通常是YEARSMONTHSDAYS 他们从最大到最小的顺序返回。

        该集合可以与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个月”。

        重写:
        equalsObject
        参数
        obj - 要检查的对象,null返回false
        结果
        如果这等于其他时期,则为真
        另请参见:
        Object.hashCode()HashMap
      • toString

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

        产出将包括期限金额和年表。

        重写:
        toStringObject
        结果
        此期间的字符串表示,不为空