Module java.base
Package java.time.chrono

Interface ChronoPeriod

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

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

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

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

实现要求:
必须小心实现此接口,以确保其他类能够正确运行。所有可以实例化的实现必须是final、不可变和线程安全的。子类应尽可能可序列化。
自:
1.8
  • Method Details

    • between

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

      开始日期包括在内,但结束日期不包括在内。该期间是使用ChronoLocalDate.until(ChronoLocalDate)计算的。因此,计算是特定于年表的。

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

      如果结束日期在开始日期之前,则此方法的结果可能是负期间。在大多数情况下,支持字段中的正负号将是相同的。

      参数:
      startDateInclusive - 开始日期(包括),指定计算的年表,不能为空
      endDateExclusive - 结束日期(不包括),在任何年表中,不能为空
      返回:
      此日期与结束日期之间的期间,不能为空
      参见:
    • get

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

      支持的单位是特定于年表的。它们通常是YEARSMONTHSDAYS。请求不受支持的单位将引发异常。

      指定者:
      get 在接口 TemporalAmount
      参数:
      unit - 要返回值的TemporalUnit
      返回:
      单位的长整型值
      抛出:
      DateTimeException - 如果单位不受支持
      UnsupportedTemporalTypeException - 如果单位不受支持
    • getUnits

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

      支持的单位是特定于年表的。它们通常是YEARSMONTHSDAYS。它们按从大到小的顺序返回。

      此集合可与get(TemporalUnit)结合使用,以访问期间的整个状态。

      指定者:
      getUnits 在接口 TemporalAmount
      返回:
      包含支持单位的列表,不能为空
    • 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()
      返回每个单位的数量已归一化的此期间的副本。

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

      返回:
      基于此期间的ChronoPeriod,其中每个单位的数量已归一化,不能为空
      抛出:
      ArithmeticException - 如果发生数值溢出
    • addTo

      Temporal addTo(Temporal temporal)
      将此期间添加到指定的时间对象。

      Temporal.plus(TemporalAmount)来反转调用模式更清晰。

         // 这两行是等效的,但推荐第二种方法
         dateTime = thisPeriod.addTo(dateTime);
         dateTime = dateTime.plus(thisPeriod);
       

      指定者:
      addTo 在接口 TemporalAmount
      参数:
      temporal - 要调整的时间对象,不能为空
      返回值:
      调整后的相同类型的对象,不能为空
      抛出:
      DateTimeException - 如果无法添加
      ArithmeticException - 如果发生数值溢出
    • subtractFrom

      Temporal subtractFrom(Temporal temporal)
      从指定的时间对象中减去这段时间。

      返回一个与输入相同可观察类型的时间对象,减去了这段时间。

      在大多数情况下,通过使用Temporal.minus(TemporalAmount)来反转调用模式更清晰。

         // 这两行是等价的,但推荐第二种方法
         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
      返回值:
      如果这个等于另一个时间段,则为true
      参见:
    • hashCode

      int hashCode()
      此段时间的哈希码。
      覆盖:
      hashCode 在类 Object
      返回值:
      适当的哈希码
      参见:
    • toString

      String toString()
      将此段时间输出为一个String

      输出将包括时间段数量和年表。

      覆盖:
      toString 在类 Object
      返回值:
      此段时间的字符串表示,不能为空