簡體   English   中英

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

[英]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)通過添加偏移返回clock.instant()返回時間,但Instant.now(clock)沒有這樣做。

為什么這樣設計? 在這兩種情況下,我們不期待相同的結果嗎?

更新:Instant在時區意義上與UTC無關。 它與UTC僅作為時間標准有關。

主要區別在於退貨類型。 它們具有不同的字符串表示形式,因為類型本身具有非常不同的含義。

Instant#now(時鍾)返回Instant 瞬間“[a]瞬時點在時間線上”

LocalDate#now(Clock)返回LocalDate LocalTime“在掛鍾上看到的當地時間的描述”

因此, Instant#now(Clock)LocalDate#now(Clock)意味着非常不同的東西,自然會產生不同的結果。 他們的共同點是一個名字。 方法名稱是灰塵。 請參閱類型。

在固定時鍾上Instant.now(時鍾)LocalDate.now(時鍾)都將返回常量值。 接受Clock作為參數的要點是能夠控制參考時間或時鍾分辨率等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM