java 8 次 api - Instant.now(时钟) vs LocaldateTime.now(时钟)

java 8 time api - Instant.now(clock) vs LocaldateTime.now(clock)

对于 java 8

以下代码
  1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone())); 
  2. System.out.println(Instant.now(Clock.systemDefaultZone()));

第 1 行通过添加偏移量打印当前时间,但第 2 行打印当前时间而不添加偏移量。

我检查了两者的源代码,发现 LocaDateTime.now(clock) return clock.instant() return 时间通过添加偏移量但 Instant.now(clock) 没有这样做。

为什么这样设计?在这两种情况下我们不期待相同的结果吗?

更新:Instant 在时区意义上与 UTC 无关。它仅作为时间标准与 UTC 相关。

主要区别在于 return 类型。它们具有不同的字符串表示形式,因为类型本身具有非常不同的含义。

即时#现在(时钟) returns 即时即时"[a]n instantaneous point on the time-line"

LocalDate#now(时钟) returns LocalDateLocalTime"a description of the local time as seen on a wall clock".

因此 Instant#now(Clock)LocalDate#now(Clock) 意味着非常不同的事情,自然会有不同的结果.他们的主要共同点是名字。方法名称是灰尘。参考类型。

在固定的 Clock 上,Instant.now(clock)LocalDate.now (clock) 将 return 常数值。接受 Clock 作为参数的目的是能够控制诸如参考时间或时钟分辨率之类的东西。