java.time 中默认使用哪个“Clock”实现?

Which `Clock` implementation is the default in java.time?

java.time 框架内置于 Java 8 及更高版本中,包括 Clock class。 class 提供了几个对测试我们的日期时间处理代码有用的变体。

Instant.now( Clock.fixed​( myInstant , myZoneId ) )

哪个 Clock 实例表示在 java.time 调用中隐式使用的默认值,其中我们未指定 Clock?

Instant.now()

我想默认值是:

…但是文档没有说明是哪个。

进行单元测试时,有时我们需要一个行为有所改变的时钟。但是当我们想显式传递一个给出默认行为的Clock对象时,我们用什么?

Instant.now()1 的源代码,如果您使用 IDE2[=35=,您可以轻松找到自己]:

public static Instant now() {
    return Clock.systemUTC().instant();
}

1) 从 OpenJDK 复制 14
2) 在 Eclipse 中,将光标放在 now() 上并按 F3 以查看源代码。
在 IntelliJ 中,按 F4,或选择“查看”>“跳转到源代码”,或按 Mac ⌘+ 单击。

保证 Java 的所有兼容版本都会这样做,因为它是为该方法定义的合同的一部分,即它是如此 记录now() 的 javadoc 中:

This will query the system UTC clock to obtain the current instant.

link 导致 Clock.systemUTC()