public enum ChronoUnit extends Enum<ChronoUnit> implements TemporalUnit
这组单位提供基于单位的访问来操纵日期,时间或日期时间。 可以通过实施TemporalUnit
扩展标准的单位。
这些单元适用于多个日历系统。 例如,大多数非ISO日历系统定义了几个月,几个月和几天的单位,只是略有不同的规则。 每个单元的文档说明它如何运作。
Enum Constant and Description |
---|
CENTURIES
代表一个世纪概念的单位。
|
DAYS
代表一天概念的单位。
|
DECADES
代表十年概念的单位。
|
ERAS
代表一个时代概念的单位。
|
FOREVER
代表永恒概念的人造单位。
|
HALF_DAYS
代表AM / PM使用的半天的概念的单位。
|
HOURS
代表一小时概念的单位。
|
MICROS
代表微秒的概念的单位。
|
MILLENNIA
代表千年概念的单位。
|
MILLIS
代表毫秒概念的单位。
|
MINUTES
代表一分钟概念的单位。
|
MONTHS
代表一个月概念的单位。
|
NANOS
代表纳秒概念的单位,最小支持的时间单位。
|
SECONDS
代表第二个概念的单位。
|
WEEKS
代表一周概念的单位。
|
YEARS
代表一年概念的单位。
|
Modifier and Type | Method and Description |
---|---|
<R extends Temporal> |
addTo(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()
按照它们声明的顺序返回一个包含此枚举类型常量的数组。
|
public static final ChronoUnit NANOS
public static final ChronoUnit MICROS
public static final ChronoUnit MILLIS
public static final ChronoUnit SECONDS
public static final ChronoUnit MINUTES
public static final ChronoUnit HOURS
public static final ChronoUnit HALF_DAYS
public static final ChronoUnit DAYS
24 Hours
。
当与其他日历系统一起使用时,它必须对应于地球上太阳升起和设定所定义的日期。 不需要从午夜开始 - 在日历系统之间转换时,日期应在中午相当。
public static final ChronoUnit WEEKS
当与其他日历系统一起使用时,它必须对应于整数天。
public static final ChronoUnit MONTHS
365.2425 Days
十二分之一。
当与其他日历系统一起使用时,它必须对应于整数天。
public static final ChronoUnit YEARS
365.2425 Days
。
当与其他日历系统一起使用时,它必须对应于大约相当于太阳周围地球通过的一年的整数天数。
public static final ChronoUnit DECADES
当与其他日历系统一起使用时,它必须对应于整数天,通常是整数年。
public static final ChronoUnit CENTURIES
当与其他日历系统一起使用时,它必须对应于整数天,通常是整数年。
public static final ChronoUnit MILLENNIA
当与其他日历系统一起使用时,它必须对应于整数天,通常是整数年。
public static final ChronoUnit ERAS
1,000,000,000 Years
。
当与其他日历系统一起使用时,本机没有限制。
public static final ChronoUnit FOREVER
public static ChronoUnit[] values()
for (ChronoUnit c : ChronoUnit.values())
System.out.println(c);
public static ChronoUnit valueOf(String name)
name
- 要返回的枚举常量的名称。
IllegalArgumentException
- 如果此枚举类型没有指定名称的常量
NullPointerException
- 如果参数为空
public Duration getDuration()
这个班的所有单位都有预计的时间。 天数因夏令时而异,而几个月的长度不同。
getDuration
在接口
TemporalUnit
public boolean isDurationEstimated()
该课程的所有时间单位都被认为是准确的,而该课程中的所有日期单位都被认为是估计的。
此定义忽略闰秒,但认为由于夏令时和天数不同,天数不同。
isDurationEstimated
在界面
TemporalUnit
public boolean isDateBased()
从日到日的所有单位都是基于日期的。 基于时间的单位和FOREVER
返回false。
isDateBased
在界面
TemporalUnit
public boolean isTimeBased()
从纳米到半天的所有单位都是基于时间的。 基于日期的单位和FOREVER
返回false。
isTimeBased
在接口
TemporalUnit
public boolean isSupportedBy(Temporal temporal)
TemporalUnit
复制
isSupportedBy
在界面
TemporalUnit
temporal
- 要检查的时间对象,不为空
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
。
实现不能改变指定的时间对象。 相反,必须退还原件的调整副本。 这为不可变和可变的实现提供了相当的安全行为。
addTo
在界面
TemporalUnit
R
- 时间对象的类型
temporal
- 要调整的时间对象,不为空
amount
- 此单位的数量,正或负
public long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive)
TemporalUnit
复制
这计算出这个单位的数量。 起始点和终点作为时间对象提供,并且必须是兼容类型。 实施将在计算数量之前将第二类型转换为第一类的实例。 如果结束在开始之前,结果将为负数。 例如,可以使用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
。 实现不能改变指定的时间对象。
between
在接口
TemporalUnit
temporal1Inclusive
- 基础时间对象,不为null
temporal2Exclusive
- 其他时间对象,排他,非空
public String toString()
Enum
复制
toString
在界面
TemporalUnit
toString
在
Enum<ChronoUnit>