# 时钟

> 原文： [https://docs.oracle.com/javase/tutorial/datetime/iso/clock.html](https://docs.oracle.com/javase/tutorial/datetime/iso/clock.html)

大多数基于时间的对象提供无参数 `now（）`方法，该方法使用系统时钟和默认时区提供当前日期和时间。这些基于时间的对象还提供单参数`现在（时钟）`方法，允许您传入替代 [`时钟`](https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html) 。

当前日期和时间取决于时区，对于全球化应用，需要`时钟`以确保使用正确的时区创建日期/时间。因此，尽管`时钟`类的使用是可选的，但此功能允许您测试其他时区的代码，或者使用固定时钟，时间不会改变。

`Clock` 类是抽象的，因此您无法创建它的实例。以下工厂方法可用于测试。

*   [`Clock.offset（时钟，持续时间）`](https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html#offset-java.time.Clock-java.time.Duration-) 返回一个被指定`持续时间`偏移的时钟。
*   [`Clock.systemUTC（）`](https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html#systemUTC--) 返回表示格林威治/ UTC 时区的时钟。
*   [`Clock.fixed（Instant，ZoneId）`](https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html#fixed-java.time.Instant-java.time.ZoneId-) 总是返回相同的 `Instant` 。对于这个时钟，时间停滞不前。