public abstract class Clock extends Object
此类的实例被用来查找当前的即时,可以使用存储的时区来解释当前日期和时间。例如,一个时钟可以用来代替System.currentTimeMillis()
和TimeZone.getDefault()
。
使用一个Clock
是可选的。所有关键日期时间类也有一个now()
工厂方法,使用系统时钟的默认时区。这种抽象的主要目的是允许备用时钟插入在作为和当需要。应用程序使用一个对象来获得当前时间,而不是一个静态方法。这可以简化测试。
对于应用程序的最佳实践是通过Clock
成任何需要的电流瞬间的方法。一个依赖注入框架是实现这一的一种方法:
公共课mybean {私人时钟时钟;/ /依赖注入…公共无效过程(localdate eventdate){如果(eventdate。是(localdate。现在(时钟)){…}}}这个方法允许一个备用时钟,如
fixed
或
offset
期间要使用的测试。
的system
工厂方法提供基于最好的系统时钟可以使用System.currentTimeMillis()
时钟,或更高分辨率的时钟,如果有可用的。
的主要方法被定义为允许抛出一个异常。在正常使用中,没有一个异常将被抛出,但是一个可能的实现将是从一个中央时间服务器在网络上获得的时间。显然,在这种情况下,查找可能失败,因此允许该方法抛出异常。
返回的时刻,从时间尺度上忽略闰秒Clock
工作,如Instant
。如果实现包一个提供了第二个信息的源,那么一个机制应该用来“平滑”第二个信息。java的时间尺度utc-sls授权使用,然而时钟的实现可能选择他们是如何准确的时间尺度,只要文件如何工作。实现因此不需要实际执行utc-sls转换或者意识到闰秒。
实现应该实现Serializable
尽可能和必须的文件,他们是否支持序列化。
System.currentTimeMillis()
。该方法提供了一点,以保证时钟的准确性。需要更精确的时钟应用程序必须实现这个抽象类本身使用不同的外部时钟,如NTP服务器。
Modifier | Constructor and Description |
---|---|
protected |
Clock()
由子类访问的构造函数。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj)
检查这个时钟是否等于另一个时钟。
|
static Clock |
fixed(Instant fixedInstant, ZoneId zone)
获得总是返回同一时刻的时钟。
|
abstract ZoneId |
getZone()
获取用于创建日期和时间的时区。
|
int |
hashCode()
这个时钟的哈希代码。
|
abstract Instant |
instant()
获取时钟的当前时刻。
|
long |
millis()
获取时钟的当前毫秒瞬间。
|
static Clock |
offset(Clock baseClock, Duration offsetDuration)
获得时钟返回瞬间从指定的时钟与指定的持续时间增加
|
static Clock |
system(ZoneId zone)
获得一个时钟,返回当前即时使用最佳可用的系统时钟。
|
static Clock |
systemDefaultZone()
获得一个时钟,使用最佳可用的系统时钟返回当前的即时时钟,转换为使用默认时区的日期和时间。
|
static Clock |
systemUTC()
获得时钟返回当前使用最好的系统时钟,转换为日期和使用UTC时区的时间。
|
static Clock |
tick(Clock baseClock, Duration tickDuration)
获得时钟返回瞬间从指定的时钟截断到指定时间最近的发生。
|
static Clock |
tickMinutes(ZoneId zone)
获得一个时钟,返回当前即时在整个分钟内使用最好的可用的系统时钟。
|
static Clock |
tickSeconds(ZoneId zone)
获得一个时钟,返回当前的即时滴答在整个秒使用最好的系统时钟。
|
abstract Clock |
withZone(ZoneId zone)
返回这个时钟的副本与一个不同的时区。
|
public static Clock systemUTC()
这个时钟,而不是systemDefaultZone()
,应使用当你需要当前没有日期或时间。
这个时钟是基于最好的可用的系统时钟。这可以用System.currentTimeMillis()
,或更高分辨率的时钟,如果有可用的。
从即时的日期或时间的转换使用的UTC time-zone。
返回的实现是不可变的,线程安全和Serializable
。它相当于system(ZoneOffset.UTC)
。
public static Clock systemDefaultZone()
这个时钟是基于最好的可用的系统时钟。这可以用System.currentTimeMillis()
,或更高分辨率的时钟,如果有可用的。
使用此方法硬代码依赖于默认时区到您的应用程序。建议避免这一情况,并尽可能使用一个特定的时区。的UTC clock
时应使用你需要的电流瞬间没有日期或时间。
返回的实现是不可变的,线程安全和Serializable
。它相当于system(ZoneId.systemDefault())
。
ZoneId.systemDefault()
public static Clock system(ZoneId zone)
这个时钟是基于最好的可用的系统时钟。这可以用System.currentTimeMillis()
,或更高分辨率的时钟,如果有可用的。
从即时到日期或时间转换使用指定的时区。
返回的实现是不可变的,线程安全和Serializable
。
zone
-时区转换用途的即时约会时间,不空
public static Clock tickSeconds(ZoneId zone)
这个时钟将总是有第二场设置为零的纳米。这保证了可见的时间在整个秒。底层的时钟是最好的可用的系统时钟,相当于用system(ZoneId)
。
实现可能使用性能原因的缓存策略。因此,它是可能的,通过这个时钟观察到的第二个开始将是比所观察到的直接通过底层时钟。
返回的实现是不可变的,线程安全和Serializable
。它相当于tick(system(zone), Duration.ofSeconds(1))
。
zone
-时区转换用途的即时约会时间,不空
public static Clock tickMinutes(ZoneId zone)
这个时钟将总是有纳米第二和第二个分钟的字段设置为零。这保证了在整个分钟内可见的时间。底层的时钟是最好的可用的系统时钟,相当于用system(ZoneId)
。
实现可能使用性能原因的缓存策略。因此,它是可能的,通过这个时钟观察到的一分钟的开始将是比所观察到的直接通过底层时钟。
返回的实现是不可变的,线程安全和Serializable
。它相当于tick(system(zone), Duration.ofMinutes(1))
。
zone
-时区转换用途的即时约会时间,不空
public static Clock tick(Clock baseClock, Duration tickDuration)
此时钟将只在指定的时间内滴答滴答。因此,如果时间是半秒,时钟将瞬间截断的半秒。
蜱持续时间必须是积极的。如果它有一个小于一毫秒的一部分,那么整个持续时间必须分为一秒,而不留下一个剩余部分。所有正常的滴答时间将符合这些标准,包括任何多的小时,分钟,秒和毫秒,明智的纳秒时间,如20ns,250000ns和500000ns。
零或一纳秒的持续时间将没有截断效应。通过其中一个将返回底层时钟。
实现可能使用性能原因的缓存策略。因此,它是可能的,通过此时钟观察到的请求的持续时间的开始将是比所观察到的直接通过底层时钟。
返回的实现是不可变的,线程安全和Serializable
提供基础时钟。
baseClock
-基准时钟的滴答作响的时钟的基础,不为空
tickDuration
-每个可见滴答,时间不是消极的,不是空的
IllegalArgumentException
-如果时间是负的,或有一个小于一毫秒,整个持续时间是不可分割的一部分
ArithmeticException
-如果时间太大,被表示为Nano
public static Clock fixed(Instant fixedInstant, ZoneId zone)
这个时钟只返回指定的即时。因此,它不是一个传统意义上的时钟。主要使用的情况是在测试中,在测试中,固定时钟确保测试不依赖于当前时钟。
返回的实现是不可变的,线程安全和Serializable
。
fixedInstant
-作为时钟的瞬间,不为空
zone
-时区转换用途的即时约会时间,不空
public static Clock offset(Clock baseClock, Duration offsetDuration)
这个时钟将另一个时钟,归来的时刻是后来由指定的持续时间。如果时间是负的,瞬间将比当前的日期和时间提前。主要使用的情况是模拟运行在未来或过去。
一个零的持续时间将没有抵消作用。通过零将返回底层时钟。
返回的实现是不可变的,线程安全和Serializable
提供基础时钟。
baseClock
的基准时钟加时间,不空
offsetDuration
-持续时间增加,不为空
public abstract ZoneId getZone()
时钟通常会获得当前的瞬间,然后将其转换为使用时区的日期或时间。此方法返回所使用的时区。
public abstract Clock withZone(ZoneId zone)
时钟通常会获得当前的瞬间,然后将其转换为使用时区的日期或时间。此方法返回一个具有类似属性的时钟,但使用不同的时区。
zone
-时区改变,不为空
public long millis()
返回基于即时毫秒,测量从1970-01-01t00:00z(UTC)。这相当于System.currentTimeMillis()
定义。
大多数应用程序都应避免使用这种方法,Instant
代表了一瞬间的时间线而不是一个原始的毫秒值。提供这种方法,允许使用的时钟在高性能的使用情况下,创建一个对象将是不可接受的。
目前instant()
默认实现调用。
DateTimeException
如果即时不能得到,不被大多数的实现
public abstract Instant instant()
这将返回一个表示时钟所定义的当前时刻的时刻。
DateTimeException
如果即时不能得到,不被大多数的实现
public boolean equals(Object obj)
钟应重写此方法比较的基础上,以国家为满足Object.equals(java.lang.Object)
合同。如果不重写,行为是由Object.equals(java.lang.Object)
equals
方法重写,继承类
Object
obj
-检查对象,空返回false
Object.hashCode()
,
HashMap
public int hashCode()
钟应重写此方法,根据他们的状态和满足Object.hashCode()
合同。如果不重写,行为是由Object.hashCode()
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.