- java.lang.Object
-
- java.lang.Enum<ChronoUnit>
-
- java.time.temporal.ChronoUnit
-
- All Implemented Interfaces:
-
Serializable
,Comparable<ChronoUnit>
,TemporalUnit
public enum ChronoUnit extends Enum<ChronoUnit> implements TemporalUnit
一组标准的日期单位。这组单位提供基于单位的访问来操纵日期,时间或日期时间。 可以通过实施
TemporalUnit
来扩展标准的单位。这些单元适用于多个日历系统。 例如,大多数非ISO日历系统定义了几个月,几个月和几天的单位,只是略有不同的规则。 每个单元的文档说明它如何运作。
- 实现要求:
- 这是一个最终的,不可变的和线程安全的枚举。
- 从以下版本开始:
- 1.8
-
-
Enum Constant Summary
Enum Constants Enum Constant 描述 CENTURIES
代表一个世纪概念的单位。DAYS
代表一天概念的单位。DECADES
代表十年概念的单位。ERAS
代表一个时代概念的单位。FOREVER
代表永恒概念的人造单位。HALF_DAYS
代表AM / PM使用的半天的概念的单位。HOURS
代表一小时概念的单位。MICROS
代表微秒的概念的单位。MILLENNIA
代表千年概念的单位。MILLIS
代表毫秒概念的单位。MINUTES
代表一分钟概念的单位。MONTHS
代表一个月概念的单位。NANOS
代表纳秒概念的单位,最小支持的时间单位。SECONDS
代表第二个概念的单位。WEEKS
代表一周概念的单位。YEARS
代表一年概念的单位。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 <R extends Temporal>
RaddTo(R temporal, long amount)
返回添加指定句点的指定时间对象的副本。long
between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)
计算两个时间对象之间的时间量。Duration
getDuration()
在ISO日历系统中获取本机的预计持续时间。boolean
isDateBased()
检查本机是否是日期单位。boolean
isDurationEstimated()
检查单位的持续时间是否是估计。boolean
isSupportedBy(Temporal temporal)
检查本机是否受指定的时间对象的支持。boolean
isTimeBased()
检查本机是否是时间单位。String
toString()
返回声明中包含的此枚举常量的名称。static ChronoUnit
valueOf(String name)
以指定的名称返回此类型的枚举常量。static ChronoUnit[]
values()
按照它们声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
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
-
-
方法详细信息
-
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
复制- 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
- 重写:
-
toString
在Enum<ChronoUnit>
- 结果
- 这个枚举常数的名称
-
-