- 所有已实现的接口:
Serializable
,Comparable<ChronoUnit>
,Constable
,TemporalUnit
这组单位提供基于单位的访问来操作日期、时间或日期时间。可以通过实施 TemporalUnit
来扩展标准单位集。
这些单位旨在适用于多个日历系统。例如,大多数非 ISO 日历系统定义年、月和日的单位,只是规则略有不同。每个单元的文档解释了它是如何工作的。
- 实现要求:
- 这是一个最终的、不可变的和线程安全的枚举。
- 自从:
- 1.8
-
内部类总结
在类 java.lang.Enum 中声明的嵌套类/接口
Enum.EnumDesc<E extends Enum<E>>
-
枚举常量总结
枚举常量枚举常量描述代表世纪概念的单位。代表一天概念的单位。代表十年概念的单位。代表一个时代概念的单位。代表永恒概念的人工单位。表示半天概念的单位,用于 AM/PM。表示小时概念的单位。代表微秒概念的单位。代表千年概念的单位。代表毫秒概念的单位。代表分钟概念的单位。代表月份概念的单位。表示纳秒概念的单位,是受支持的最小时间单位。代表秒概念的单位。代表一周概念的单位。代表年概念的单位。 -
方法总结
修饰符和类型方法描述<R extends Temporal>
RaddTo
(R temporal, long amount) 返回添加了指定时间段的指定时态对象的副本。long
计算两个时间对象之间的时间量。获取此单位在 ISO 日历系统中的估计持续时间。boolean
检查此单位是否为日期单位。boolean
检查单位的持续时间是否是估计值。boolean
检查此单位是否为时间单位。toString()
返回声明中包含的此枚举常量的名称。static ChronoUnit
返回具有指定名称的此类的枚举常量。static ChronoUnit[]
values()
返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。在类 java.lang.Enum 中声明的方法
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
在接口 java.time.temporal.TemporalUnit 中声明的方法
isSupportedBy
-
枚举常量详细信息
-
NANOS
表示纳秒概念的单位,是受支持的最小时间单位。对于 ISO 日历系统,它等于秒单位的第 1,000,000,000 部分。 -
MICROS
代表微秒概念的单位。对于 ISO 日历系统,它等于秒单位的第 1,000,000 部分。 -
MILLIS
代表毫秒概念的单位。对于 ISO 日历系统,它等于秒单位的第 1000 部分。 -
SECONDS
代表秒概念的单位。对于 ISO 日历系统,它等于 SI 单位系统中的秒,但闰秒除外。 -
MINUTES
代表分钟概念的单位。对于 ISO 日历系统,它等于 60 秒。 -
HOURS
表示小时概念的单位。对于 ISO 日历系统,它等于 60 分钟。 -
HALF_DAYS
表示半天概念的单位,用于 AM/PM。对于 ISO 日历系统,它等于 12 小时。 -
DAYS
代表一天概念的单位。对于 ISO 日历系统,它是从午夜到午夜的标准日。一天的估计持续时间是24 Hours
。当与其他日历系统一起使用时,它必须对应于地球上太阳升起和落下所定义的日子。不要求日子从午夜开始 - 在日历系统之间转换时,日期应该等同于中午。
-
WEEKS
代表一周概念的单位。对于 ISO 日历系统,它等于 7 天。当与其他日历系统一起使用时,它必须对应于整数天数。
-
MONTHS
代表月份概念的单位。对于 ISO 日历系统,月份的长度因月份而异。一个月的估计持续时间是365.2425 Days
的十二分之一。当与其他日历系统一起使用时,它必须对应于整数天数。
-
YEARS
代表年概念的单位。对于 ISO 日历系统,它等于 12 个月。一年的估计持续时间是365.2425 Days
。当与其他日历系统一起使用时,它必须对应于整数天或月,大致等于地球绕太阳运行所定义的一年。
-
DECADES
代表十年概念的单位。对于 ISO 日历系统,它等于 10 年。当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。
-
CENTURIES
代表世纪概念的单位。对于 ISO 日历系统,它等于 100 年。当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。
-
MILLENNIA
代表千年概念的单位。对于 ISO 日历系统,它等于 1000 年。当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。
-
ERAS
代表一个时代概念的单位。 ISO 日历系统没有纪元,因此无法将纪元添加到日期或日期时间。时代的估计持续时间被人为定义为1,000,000,000 Years
。当与其他日历系统一起使用时,对单位没有限制。
-
FOREVER
代表永恒概念的人工单位。这主要与TemporalField
一起使用来表示无限字段,例如年份或纪元。该单元的估计持续时间被人为定义为Duration
支持的最大持续时间。
-
-
方法详情
-
values
返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。- 返回:
- 包含此枚举类常量的数组,按照它们声明的顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)- 参数:
name
- 要返回的枚举常量的名称。- 返回:
- 具有指定名称的枚举常量
- 抛出:
IllegalArgumentException
- 如果此枚举类没有具有指定名称的常量NullPointerException
- 如果参数为空
-
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
从接口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
从接口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
从类复制的描述:Enum
返回声明中包含的此枚举常量的名称。这个方法可以被重写,尽管它通常不是必需的或不可取的。当存在更“程序员友好”的字符串形式时,枚举类应该重写此方法。- 指定者:
toString
在接口TemporalUnit
中- 重写:
toString
在类Enum<ChronoUnit>
中- 返回:
- 此枚举常量的名称
-