亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

夏令時前后將 Duration.ofDays(1) 和 Period.ofDays(1)

夏令時前后將 Duration.ofDays(1) 和 Period.ofDays(1)

楊__羊羊 2022-01-19 15:35:19
美國/東部時區的夏令時于 11 月 1 日凌晨 2 點結束。結果,凌晨 2 點變成了凌晨 1 點。我無法理解下面給出的代碼中的以下內容:為什么第 2 行顯示時間 09:00,為什么不顯示 10:00(增加 1 天)?為什么第 4 行顯示時間 10:00,為什么不顯示 09:00(加上 24 小時)?LocalDateTime ld = LocalDateTime.of(2015, Month.OCTOBER, 31, 10, 0);ZonedDateTime date = ZonedDateTime.of(ld, ZoneId.of("US/Eastern"));System.out.println(date);       //line 1 - 2015-10-31T10:00-04:00[US/Eastern]date = date.plus(Duration.ofDays(1));System.out.println(date);       //line 2 - 2015-11-01T09:00-05:00[US/Eastern]date = ZonedDateTime.of(ld, ZoneId.of("US/Eastern"));System.out.println(date);       //line 3 - 2015-10-31T10:00-04:00[US/Eastern]date = date.plus(Period.ofDays(1));System.out.println(date);       //line 4 - 2015-11-01T10:00-05:00[US/Eastern]有人可以幫我嗎?
查看完整描述

2 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

持續時間:盡管該ofDays方法Duration沒有天數的概念。Duration.ofDays(1)立即轉換為 24 小時,所以這就是您要添加的內容。由于您在 DST 結束前一天將 24 小時添加到 10:00,因此您可以在第二天得到 09:00,如您所見,

時期:與已知日、周、月和年Duration相反。Period因此,您要添加 1 個日歷日,在第二天(10:00)達到相同的掛鐘時間,即使這意味著 25 小時后(不是 24 小時)。


查看完整回答
反對 回復 2022-01-19
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

請參閱有關Duration和Period的完整 Java 文檔,只需一次快速的 Google 搜索即可。


從持續時間:


此外,可以使用 DAYS 單位并將其視為正好等于 24 小時,從而忽略夏令時的影響。有關此類的基于日期的等效項,請參見期間。


從期間:


當添加到 ZonedDateTime 時,持續時間和期間對夏令時的處理有所不同。Duration 將添加精確的秒數,因此一天的持續時間始終是 24 小時。相比之下,Period 會添加一個概念日,試圖保持本地時間


因此,Period將保持相同的小時,而 Duration 將增加 24 小時。


10 月 31 日 10:00 后 24 小時即為 11 月 1 日 9:00。


11:00

12:00

13:00(下午 1 點)

14:00

15:00

16:00

17:00

18:00

19:00

20:00

21:00

22:00

23:00

0:00(午夜)

1:00

1:00(這是額外的一小時)

2:00

3:00

4:00

5:00

6:00

7:00

8:00

9:00


查看完整回答
反對 回復 2022-01-19
  • 2 回答
  • 0 關注
  • 484 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號