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 LocalDate。 LocalTime 是 "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 作为参数的目的是能够控制诸如参考时间或时钟分辨率之类的东西。
对于 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 LocalDate。 LocalTime 是 "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 作为参数的目的是能够控制诸如参考时间或时钟分辨率之类的东西。