- 所有已实现的接口:
-
Serializable
,Comparable<ChronoUnit>
,Constable
,TemporalUnit
这组单位提供基于单位的访问以操作日期、时间或日期时间。标准单位集合可以通过实现TemporalUnit
来扩展。
这些单位旨在适用于多个日历系统。例如,大多数非ISO日历系统定义了年、月和日的单位,只是规则略有不同。每个单位的文档解释了其操作方式。
- 实现要求:
- 这是一个最终的、不可变的和线程安全的枚举。
- 自版本:
- 1.8
-
Nested Class Summary
Nested classes/interfaces declared in class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantDescription代表一个世纪概念的单位。代表一天概念的单位。代表一个十年概念的单位。代表一个时代概念的单位。代表永远概念的人工单位。代表半天概念的单位,如上午/下午所用。代表一个小时概念的单位。代表一个微秒概念的单位。代表一个千年概念的单位。代表一个毫秒概念的单位。代表一个分钟概念的单位。代表一个月概念的单位。代表纳秒概念的单位,时间支持的最小单位。代表一个秒概念的单位。代表一个星期概念的单位。代表一年概念的单位。 -
Method Summary
Modifier and TypeMethodDescription<R extends Temporal>
RaddTo
(R temporal, long amount) 返回具有指定周期添加的指定时间对象的副本。long
计算两个时间对象之间的时间量。获取ISO日历系统中此单位的估计持续时间。boolean
检查此单位是否为日期单位。boolean
检查单位的持续时间是否为估计值。boolean
检查此单位是否为时间单位。toString()
返回此枚举常量的名称,如声明中所包含的。static ChronoUnit
返回具有指定名称的此类的枚举常量。static ChronoUnit[]
values()
返回包含此枚举类的常量的数组,按照它们声明的顺序。Methods declared in class java.lang.Enum
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
Methods declared in interface java.time.temporal.TemporalUnit
isSupportedBy
-
Enum Constant Details
-
NANOS
代表纳秒概念的单位,时间支持的最小单位。对于ISO日历系统,它等于秒单位的十亿分之一。 -
MICROS
代表微秒概念的单位。对于ISO日历系统,它等于秒单位的百万分之一。 -
MILLIS
代表毫秒概念的单位。对于ISO日历系统,它等于秒单位的千分之一。 -
SECONDS
代表秒概念的单位。对于ISO日历系统,它等于国际单位制中的秒,除了闰秒。 -
MINUTES
代表分钟概念的单位。对于ISO日历系统,它等于60秒。 -
HOURS
代表小时概念的单位。对于ISO日历系统,它等于60分钟。 -
HALF_DAYS
代表半天概念的单位,如上午/下午所用。对于ISO日历系统,它等于12小时。 -
DAYS
代表一天概念的单位。对于ISO日历系统,它是从午夜到午夜的标准日。一天的估计持续时间为24小时
。当与其他日历系统一起使用时,它必须对应于地球上太阳的升起和落下定义的一天。不要求一天从午夜开始 - 在转换日历系统时,日期应在中午等同。
-
WEEKS
代表一个星期概念的单位。对于ISO日历系统,它等于7天。当与其他日历系统一起使用时,它必须对应于整数天数。
-
MONTHS
代表一个月概念的单位。对于ISO日历系统,月份的长度因年份的不同而异。一个月的估计持续时间是365.2425天
的十二分之一。当与其他日历系统一起使用时,它必须对应于整数天数。
-
YEARS
代表一年概念的单位。对于ISO日历系统,它等于12个月。一年的估计持续时间是365.2425天
。当与其他日历系统一起使用时,它必须对应于整数天数或大致等于地球绕太阳一周定义的一年的整数月数。
-
DECADES
代表一个十年概念的单位。对于ISO日历系统,它等于10年。当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。
-
CENTURIES
代表一个世纪概念的单位。对于ISO日历系统,它等于100年。当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。
-
MILLENNIA
代表一个千年概念的单位。对于ISO日历系统,它等于1000年。当与其他日历系统一起使用时,它必须对应于整数天数,通常是整数年数。
-
ERAS
代表一个时代概念的单位。ISO日历系统没有时代,因此无法向日期或日期时间添加时代。时代的估计持续时间被人为定义为1,000,000,000年
。当与其他日历系统一起使用时,对该单位没有限制。
-
FOREVER
代表永远概念的人工单位。主要用于TemporalField
,表示无限制的字段,如年或时代。该单位的估计持续时间被人为定义为Duration
支持的最大持续时间。
-
-
Method Details
-
values
返回包含此枚举类的常量的数组,按照它们声明的顺序。- 返回:
- 包含此枚举类的常量的数组,按照它们声明的顺序
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须与此类中用于声明枚举常量的标识符完全匹配。(不允许多余的空格字符。)- 参数:
-
name
- 要返回的枚举常量的名称。 - 返回:
- 具有指定名称的枚举常量
- 抛出:
-
IllegalArgumentException
- 如果此枚举类没有具有指定名称的常量 -
NullPointerException
- 如果参数为null
-
getDuration
获取ISO日历系统中此单位的估计持续时间。此类中的所有单位都有估计持续时间。由于夏令时,一天的长度会有所变化,而月份的长度也不同。
- 指定者:
-
getDuration
在接口TemporalUnit
中 - 返回:
- 此单位的估计持续时间,非null
-
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)
:// 这两行是等效的,但建议使用第二种方法 temporal = thisUnit.addTo(temporal); temporal = temporal.plus(thisUnit);
建议使用第二种方法plus(TemporalUnit)
,因为在代码中更清晰易读。实现应使用
ChronoUnit
中可用的单位或ChronoField
中可用的字段执行任何查询或计算。如果不支持该单位,则必须抛出UnsupportedTemporalTypeException
。实现不得更改指定的时间对象。而是必须返回原始对象的调整副本。这为不可变和可变实现提供了等效的安全行为。
- 指定者:
-
addTo
在接口TemporalUnit
- 类型参数:
-
R
- 时间对象的类型 - 参数:
-
temporal
- 要调整的时间对象,不能为空 -
amount
- 要添加的此单位的数量,可以是正数或负数 - 返回:
- 调整后的时间对象,不能为空
-
between
从接口复制的描述:TemporalUnit
计算两个时间对象之间的时间量。这将根据此单位计算时间量。开始点和结束点作为时间对象提供,并且必须是兼容类型。实现将在计算时间量之前将第二个类型转换为第一个类型的实例。如果结束在开始之前,则结果将为负数。例如,可以使用
HOURS.between(startTime, endTime)
来计算两个时间对象之间的小时数。计算返回一个整数,表示两个时间之间完整单位的数量。例如,在时间11:30和13:29之间的小时数只有一个小时,因为它比两个小时短一分钟。
有两种等效的使用方法。第一种是直接调用此方法。第二种是使用
Temporal.until(Temporal, TemporalUnit)
:// 这两行是等效的 between = thisUnit.between(start, end); between = start.until(end, thisUnit);
应根据哪种方法使代码更易读来进行选择。例如,此方法允许计算两个日期之间的天数:
long daysBetween = DAYS.between(start, end); // 或者 long daysBetween = start.until(end, DAYS);
实现应使用
ChronoUnit
中可用的单位或ChronoField
中可用的字段执行任何查询或计算。如果不支持该单位,则必须抛出UnsupportedTemporalTypeException
。实现不得更改指定的时间对象。- 指定者:
-
between
在接口TemporalUnit
- 参数:
-
temporal1Inclusive
- 基本时间对象,不能为空 -
temporal2Exclusive
- 另一个时间对象,排他的,不能为空 - 返回:
- temporal1Inclusive和temporal2Exclusive之间的时间量,以此单位表示;如果temporal2Exclusive晚于temporal1Inclusive,则为正数,如果早于则为负数
-
toString
从类复制的描述:Enum
返回此枚举常量的名称,如声明中所包含的。虽然可以重写此方法,但通常不是必要或理想的。当存在更“程序员友好”的字符串形式时,枚举类应重写此方法。- 指定者:
-
toString
在接口TemporalUnit
- 覆盖:
-
toString
在类Enum<ChronoUnit>
- 返回:
- 此枚举常量的名称
-