Clock是带时区的时钟,内部支持4种方式获取4类Clock对象。
import java.time.Clock;
import java.time.Duration;
public class ClockTest {
public static void main(String[] args) throws InterruptedException {
//默认时钟
Clock clock = Clock.systemDefaultZone();
System.out.println(clock.getZone());
System.out.println(clock.instant());
System.out.println(clock.millis());
//偏移时钟,调整指定时间间隔获取的时钟
Clock offset = Clock.offset(clock, Duration.ofSeconds(1000));
System.out.println(offset.instant());
//滴答时钟
//相当于自定义时钟刻度(间隔),每次获取的时间,都是指定时间间隔刻度的时间,在两个时间之间,离谁近,取谁
Clock tick = Clock.tick(clock, Duration.ofSeconds(3));
System.out.println("无休眠: "+tick.instant());
System.out.println("无休眠: "+tick.instant());
System.out.println("无休眠: "+tick.instant());
Thread.sleep(1000);
System.out.println("休眠1秒:"+tick.instant());
Thread.sleep(1000);
System.out.println("休眠2秒:"+tick.instant());
Thread.sleep(1000);
System.out.println("休眠3秒:"+tick.instant());
Thread.sleep(1000);
System.out.println("休眠4秒:"+tick.instant());
Thread.sleep(1000);
System.out.println("休眠5秒:"+tick.instant());
//固定时间
Clock fixed = Clock.fixed(clock.instant(), ZoneId.systemDefault());
System.out.println("fixed:"+fixed);
}
}
输出:
Asia/Shanghai
2021-07-06T08:33:14Z
1625560394014
offset:2021-07-06T08:49:54.014Z
无休眠: 2021-07-06T08:33:12Z
无休眠: 2021-07-06T08:33:12Z
无休眠: 2021-07-06T08:33:12Z
休眠1秒:2021-07-06T08:33:15Z
休眠2秒:2021-07-06T08:33:15Z
休眠3秒:2021-07-06T08:33:15Z
休眠4秒:2021-07-06T08:33:18Z
休眠5秒:2021-07-06T08:33:18Z
fixed:FixedClock[2021-07-06T08:33:19.015Z,Asia/Shanghai]