模块 java.base

枚举类枚举类 ChronoUnit

java.lang.Object
java.lang.Enum <ChronoUnit >
java.time.temporal.ChronoUnit
所有已实现的接口:
Serializable , Comparable<ChronoUnit> , Constable , TemporalUnit

public enum ChronoUnit extends Enum <ChronoUnit > implements TemporalUnit
一组标准的日期周期单位。

这组单位提供基于单位的访问来操作日期、时间或日期时间。可以通过实施 TemporalUnit 来扩展标准单位集。

这些单位旨在适用于多个日历系统。例如,大多数非 ISO 日历系统定义年、月和日的单位,只是规则略有不同。每个单元的文档解释了它是如何工作的。

实现要求:
这是一个最终的、不可变的和线程安全的枚举。
自从:
1.8
  • 枚举常量详细信息

    • NANOS

      public static final ChronoUnit  NANOS
      表示纳秒概念的单位,是受支持的最小时间单位。对于 ISO 日历系统,它等于秒单位的第 1,000,000,000 部分。
    • MICROS

      public static final ChronoUnit  MICROS
      代表微秒概念的单位。对于 ISO 日历系统,它等于秒单位的第 1,000,000 部分。
    • MILLIS

      public static final ChronoUnit  MILLIS
      代表毫秒概念的单位。对于 ISO 日历系统,它等于秒单位的第 1000 部分。
    • SECONDS

      public static final ChronoUnit  SECONDS
      代表秒概念的单位。对于 ISO 日历系统,它等于 SI 单位系统中的秒,但闰秒除外。
    • MINUTES

      public static final ChronoUnit  MINUTES
      代表分钟概念的单位。对于 ISO 日历系统,它等于 60 秒。
    • HOURS

      public static final ChronoUnit  HOURS
      表示小时概念的单位。对于 ISO 日历系统,它等于 60 分钟。
    • HALF_DAYS

      public static final ChronoUnit  HALF_DAYS
      表示半天概念的单位,用于 AM/PM。对于 ISO 日历系统,它等于 12 小时。
    • DAYS

      public static final ChronoUnit  DAYS
      代表一天概念的单位。对于 ISO 日历系统,它是从午夜到午夜的标准日。一天的估计持续时间是 24 Hours

      当与其他日历系统一起使用时,它必须对应于地球上太阳升起和落下所定义的日子。不要求日子从午夜开始 - 在日历系统之间转换时,日期应该等同于中午。

    • WEEKS

      public static final ChronoUnit  WEEKS
      代表一周概念的单位。对于 ISO 日历系统,它等于 7 天。

      当与其他日历系统一起使用时,它必须对应于整数天数。

    • MONTHS

      public static final ChronoUnit  MONTHS
      代表月份概念的单位。对于 ISO 日历系统,月份的长度因月份而异。一个月的估计持续时间是 365.2425 Days 的十二分之一。

      当与其他日历系统一起使用时,它必须对应于整数天数。

    • YEARS

      public static final ChronoUnit  YEARS
      代表年概念的单位。对于 ISO 日历系统,它等于 12 个月。一年的估计持续时间是 365.2425 Days

      当与其他日历系统一起使用时,它必须对应于整数天或月,大致等于地球绕太阳运行所定义的一年。

    • DECADES

      public static final ChronoUnit  DECADES
      代表十年概念的单位。对于 ISO 日历系统,它等于 10 年。

      当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。

    • CENTURIES

      public static final ChronoUnit  CENTURIES
      代表世纪概念的单位。对于 ISO 日历系统,它等于 100 年。

      当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。

    • MILLENNIA

      public static final ChronoUnit  MILLENNIA
      代表千年概念的单位。对于 ISO 日历系统,它等于 1000 年。

      当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。

    • ERAS

      public static final ChronoUnit  ERAS
      代表一个时代概念的单位。 ISO 日历系统没有纪元,因此无法将纪元添加到日期或日期时间。时代的估计持续时间被人为定义为 1,000,000,000 Years

      当与其他日历系统一起使用时,对单位没有限制。

    • FOREVER

      public static final ChronoUnit  FOREVER
      代表永恒概念的人工单位。这主要与 TemporalField 一起使用来表示无限字段,例如年份或纪元。该单元的估计持续时间被人为定义为 Duration 支持的最大持续时间。
  • 方法详情

    • values

      public static ChronoUnit [] values()
      返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
      返回:
      包含此枚举类常量的数组,按照它们声明的顺序排列
    • valueOf

      public static ChronoUnit  valueOf(String  name)
      返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)
      参数:
      name - 要返回的枚举常量的名称。
      返回:
      具有指定名称的枚举常量
      抛出:
      IllegalArgumentException - 如果此枚举类没有具有指定名称的常量
      NullPointerException - 如果参数为空
    • getDuration

      public Duration  getDuration()
      获取此单位在 ISO 日历系统中的估计持续时间。

      此类中的所有单元都有估计的持续时间。天因夏令时而异,而月则有不同的长度。

      指定者:
      getDuration 在接口 TemporalUnit
      返回:
      该单元的估计持续时间,不为空
    • isDurationEstimated

      public boolean isDurationEstimated()
      检查单位的持续时间是否是估计值。

      此类中的所有时间单位都被认为是准确的,而此类中的所有日期单位都被认为是估计的。

      该定义忽略了闰秒,但考虑到日因夏令时而变化,月有不同的长度。

      指定者:
      isDurationEstimated 在接口 TemporalUnit
      返回:
      如果持续时间是估计的,则为 true;如果准确,则为 false
    • isDateBased

      public boolean isDateBased()
      检查此单位是否为日期单位。

      从天到纪元的所有单位都是基于日期的。基于时间的单位和 FOREVER 返回 false。

      指定者:
      isDateBased 在接口 TemporalUnit
      返回:
      如果是日期单位则为 true,如果是时间单位则为 false
    • isTimeBased

      public boolean isTimeBased()
      检查此单位是否为时间单位。

      从纳秒到半天的所有单位都是基于时间的。基于日期的单位和 FOREVER 返回 false。

      指定者:
      isTimeBased 在接口 TemporalUnit
      返回:
      如果是时间单位则为 true,如果是日期单位则为 false
    • addTo

      public <R extends Temporal > R addTo(R temporal, long amount)
      从接口 TemporalUnit 复制的描述
      返回添加了指定时间段的指定时态对象的副本。

      添加的周期是该单位的倍数。例如,通过在表示“天”的实例上调用此方法,传递日期和时间段“3”,此方法可用于将“3 天”添加到日期。加的周期可能是负数,相当于减法。

      有两种等效的方法可以使用此方法。第一种是直接调用此方法。第二种是使用 Temporal.plus(long, TemporalUnit)

        // these two lines are equivalent, but the second approach is recommended
        temporal = thisUnit.addTo(temporal);
        temporal = temporal.plus(thisUnit);
       
      推荐使用第二种方法,plus(TemporalUnit),代码读起来更清晰。

      实现应使用 ChronoUnit 中可用的单位或 ChronoField 中可用的字段执行任何查询或计算。如果不支持该单元,则必须抛出 UnsupportedTemporalTypeException

      实现不得更改指定的时间对象。相反,必须退回原件的调整副本。这为不可变和可变实现提供了等效的、安全的行为。

      指定者:
      addTo 在接口 TemporalUnit
      类型参数:
      R - Temporal 对象的类型
      参数:
      temporal - 要调整的时间对象,不为空
      amount - 要添加的此单位的数量,正数或负数
      返回:
      调整后的时间对象,不为空
    • between

      public long between(Temporal  temporal1Inclusive, Temporal  temporal2Exclusive)
      从接口 TemporalUnit 复制的描述
      计算两个时间对象之间的时间量。

      这将根据此单位计算金额。起点和终点作为时间对象提供,并且必须是兼容的类型。在计算金额之前,实现会将第二种类型转换为第一种类型的实例。如果结束早于开始,结果将为负。例如,可以使用 HOURS.between(startTime, endTime) 计算两个时间对象之间的小时数。

      计算返回一个整数,表示两个时间之间的完整单位数。例如,时间 11:30 和 13:29 之间的小时数将仅为一小时,因为两小时差一分钟。

      有两种等效的方法可以使用此方法。第一种是直接调用此方法。第二种是使用 Temporal.until(Temporal, TemporalUnit)

        // these two lines are equivalent
        between = thisUnit.between(start, end);
        between = start.until(end, thisUnit);
       
      应该根据哪个使代码更具可读性来做出选择。

      例如,此方法允许计算两个日期之间的天数:

       long daysBetween = DAYS.between(start, end);
       // or alternatively
       long daysBetween = start.until(end, DAYS);
       

      实现应使用 ChronoUnit 中可用的单位或 ChronoField 中可用的字段执行任何查询或计算。如果不支持该单元,则必须抛出 UnsupportedTemporalTypeException。实现不得更改指定的时间对象。

      指定者:
      between 在接口 TemporalUnit
      参数:
      temporal1Inclusive - 基本时间对象,不为空
      temporal2Exclusive - 另一个时间对象,独占,不为空
      返回:
      就本单位而言,temporal1Inclusive 和 temporal2Exclusive 之间的时间量;如果 temporal2Exclusive 晚于 temporal1Inclusive 则为正,如果早于 temporal1Inclusive 则为负
    • toString

      public String  toString()
      从类复制的描述:Enum
      返回声明中包含的此枚举常量的名称。这个方法可以被重写,尽管它通常不是必需的或不可取的。当存在更“程序员友好”的字符串形式时,枚举类应该重写此方法。
      指定者:
      toString 在接口 TemporalUnit
      重写:
      toString 在类 Enum<ChronoUnit>
      返回:
      此枚举常量的名称