gpt4 book ai didi

java 8 时间 api - Instant.now(clock) 与 LocaldateTime.now(clock)

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:48 31 4
gpt4 key购买 nike

对于 java 8 下面的代码

  1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone())); 
2. System.out.println(Instant.now(Clock.systemDefaultZone()));

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

我检查了两者的源代码,发现 LocaDateTime.now(clock) 通过添加偏移返回 clock.instant() 返回时间,但 Instant。现在(时钟) 不这样做。

为什么要这样设计?在这两种情况下,我们不希望得到相同的结果吗?

最佳答案

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

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

Instant#now(Clock) 返回Instant。一个瞬间"[a]n instantaneous point on the time-line" .

LocalDate#now(Clock) 返回 LocalDate本地时间"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) 都将返回常量值。接受时钟作为参数的目的是能够控制引用时间或时钟分辨率等内容。

关于java 8 时间 api - Instant.now(clock) 与 LocaldateTime.now(clock),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091242/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com