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

Enum ChronoUnit

  • All Implemented Interfaces:
    SerializableComparable<ChronoUnit>TemporalUnit


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

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

    这些单元适用于多个日历系统。 例如,大多数非ISO日历系统定义了几个月,几个月和几天的单位,只是略有不同的规则。 每个单元的文档说明它如何运作。

    实现要求:
    这是一个最终的,不可变的和线程安全的枚举。
    从以下版本开始:
    1.8
    • Enum Constant Detail

      • NANOS

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

        public static final ChronoUnit MICROS
        代表微秒的概念的单位。 对于ISO日历系统,它等于第二单位的第100万部分。
      • 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​()
        按照它们声明的顺序返回一个包含此枚举类型常量的数组。 该方法可用于遍历常量如下:
          for (ChronoUnit c : ChronoUnit.values())
            System.out.println(c); 
        结果
        一个包含这个枚举类型的常量的数组,按照它们被声明的顺序
      • valueOf

        public static ChronoUnit valueOf​(String name)
        以指定的名称返回此类型的枚举常量。 字符串必须完全匹配用于声明此类型的枚举常量的标识符。 (不允许使用外来空白字符。)
        参数
        name - 要返回的枚举常量的名称。
        结果
        具有指定名称的枚举常数
        异常
        IllegalArgumentException - 如果此枚举类型没有指定名称的常量
        NullPointerException - 如果参数为空
      • getDuration

        public Duration getDuration​()
        在ISO日历系统中获取本机的预计持续时间。

        这个班的所有单位都有预计的时间。 天数因夏令时而异,而几个月的长度不同。

        Specified by:
        getDuration在接口 TemporalUnit
        结果
        该单位的估计持续时间不为零
      • isDurationEstimated

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

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

        这个定义忽略了闰秒,但是认为由于夏令时和几个月不同,天数不同。

        Specified by:
        isDurationEstimated在接口 TemporalUnit
        结果
        如果持续时间估计为真,则为真,如果准确
      • isDateBased

        public boolean isDateBased​()
        检查本机是否是日期单位。

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

        Specified by:
        isDateBased在接口 TemporalUnit
        结果
        如果是日期单位,则为真,如果为单位则为假
      • isTimeBased

        public boolean isTimeBased​()
        检查本机是否是时间单位。

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

        Specified by:
        isTimeBased在接口 TemporalUnit
        结果
        如果一个时间单位是真的,如果一个日期单位是假的
      • isSupportedBy

        public boolean isSupportedBy​(Temporal temporal)
        描述从接口TemporalUnit复制
        检查本机是否受指定的时间对象的支持。

        这检查实施日期时间可以加/减这个单位。 这可以用来避免抛出异常。

        此默认实现使用Temporal.plus(long, TemporalUnit)导出值。

        Specified by:
        isSupportedBy在接口 TemporalUnit
        参数
        temporal - 要检查的时间对象,不为空
        结果
        如果设备支持,则为true
      • addTo

        public <R extends Temporal> R addTo​(R temporal,
                                            long amount)
        说明从接口TemporalUnit复制
        返回添加指定句点的指定时间对象的副本。

        增加的时间是这个单位的倍数。 例如,通过在表示“days”的实例上调用该方法,传递日期和期间“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

        实现不能改变指定的时间对象。 相反,必须退还原件的调整副本。 这为不可变和可变的实现提供了相当的安全行为。

        Specified by:
        addTo在接口 TemporalUnit
        参数类型
        R - 时间对象的类型
        参数
        temporal - 要调整的时间对象,不为null
        amount - 要添加的这个单位的数量,正数或负数
        结果
        调整后的时间对象,不为空
      • between

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

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

        计算返回一个整数,表示两个时间之间的完整单位数。 例如,11时30分至13时29分之间的小时数将只有1小时,因为距离两小时不到1分钟。

        使用这种方法有两种等效的方法。 第一个是直接调用这个方法。 二是使用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 实现不能改变指定的时间对象。

        Specified by:
        between在接口 TemporalUnit
        参数
        temporal1Inclusive - 基础时间对象,不为null
        temporal2Exclusive - 另一个时间对象,排他,非空
        结果
        在本单位之间的temporal1Inclusive和temporal2独家之间的时间量; 如果temporal2Exclusive晚于temporal1Inclusive,则为正,如果更早则为负
      • toString

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