nan*_*itv 11 java time datetime java-8 java.time.instant
对于以下java 8代码
1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone()));
2. System.out.println(Instant.now(Clock.systemDefaultZone()));
Run Code Online (Sandbox Code Playgroud)
第1行打印当前时间通过添加偏移但第2行打印当前时间而不添加偏移量.
我检查了两者的源代码,发现通过添加偏移LocaDateTime.now(clock)
返回clock.instant()
返回时间但Instant.now(clock)
没有这样做.
为什么这样设计?在这两种情况下,我们不期待相同的结果吗?
更新:Instant在时区意义上与UTC无关.它与UTC仅作为时间标准有关.
主要区别在于退货类型.它们具有不同的字符串表示形式,因为类型本身具有非常不同的含义.
Instant#now(时钟)返回Instant.一个即时是"关于时间线[A] n的瞬时点".
LocalDate#now(Clock)返回LocalDate.甲本地时间是"处看到在墙上时钟的本地时间的描述".
因此,Instant#now(Clock)和LocalDate#now(Clock)意味着非常不同的东西,自然会产生不同的结果.他们的共同点是一个名字.方法名称是灰尘.请参阅类型.
在固定时钟上,Instant.now(时钟)和LocalDate.now(时钟)都将返回常量值.接受Clock作为参数的要点是能够控制参考时间或时钟分辨率等.