![](/img/trans.png)
[英]Mock Instant.now() without using Clock into Constructor or without Clock Object
[英]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.