模块 java.base

接口 ChronoPeriod

所有父级接口:
TemporalAmount
所有已知的实现类:
Period

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

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

该周期被建模为有针对性的时间量,这意味着该周期的各个部分可能为负数。

实现要求:
必须小心实现此接口以确保其他类正确运行。所有可以实例化的实现都必须是最终的、不可变的和线程安全的。只要有可能,子类就应该是可序列化的。
自从:
1.8
  • 方法详情

    • between

      static ChronoPeriod  between(ChronoLocalDate  startDateInclusive, ChronoLocalDate  endDateExclusive)
      获得由两个日期之间的时间量组成的 ChronoPeriod

      包括开始日期,但不包括结束日期。使用 ChronoLocalDate.until(ChronoLocalDate) 计算周期。因此,计算是特定于时间顺序的。

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

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

      参数:
      startDateInclusive - 开始日期,包括在内,指定计算的时间顺序,不为空
      endDateExclusive - 结束日期,排他性的,在任何时间顺序中,不为空
      返回:
      此日期和结束日期之间的时间段,不为空
      参见:
    • get

      long get(TemporalUnit  unit)
      获取所请求单位的值。

      支持的单位是特定于时间顺序的。它们通常是 YEARS MONTHS DAYS 。请求不受支持的单元将引发异常。

      指定者:
      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  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);
       

      指定的时间必须与此期间具有相同的年表。这将返回一个添加了非零支持单位的时间。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      addTo 在接口 TemporalAmount
      参数:
      temporal - 要调整的时间对象,不为空
      返回:
      进行了调整的同一类型的对象,不为空
      抛出:
      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);
       

      指定的时间必须与此期间具有相同的年表。这将返回一个减去非零支持单位的时间。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      subtractFrom 在接口 TemporalAmount
      参数:
      temporal - 要调整的时间对象,不为空
      返回:
      进行了调整的同一类型的对象,不为空
      抛出:
      DateTimeException - 如果无法减去
      ArithmeticException - 如果发生数字溢出
    • equals

      boolean equals(Object  obj)
      检查这个时期是否等于另一个时期,包括年表。

      将这个时期与另一个时期进行比较,确保类型、每个数量和年代是相同的。请注意,这意味着“15 个月”的期限不等于“1 年零 3 个月”的期限。

      重写:
      equals 在类 Object
      参数:
      obj - 要检查的对象,null 返回 false
      返回:
      如果这等于另一个时期,则为真
      参见:
    • hashCode

      int hashCode()
      此期间的哈希码。
      重写:
      hashCode 在类 Object
      返回:
      合适的哈希码
      参见:
    • toString

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

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

      重写:
      toString 在类 Object
      返回:
      此期间的字符串表示形式,不为空