我preaparing爲Java OCP測試,並在模擬測試有這樣的關於Java的DateTime一個問題:鑑於紐約當在Java中的DateTime的Duration.between()返回負值
比洛杉磯快3小時,下面的代碼會打印什麼 ?
LocalDateTime ldt = LocalDateTime.of(2017, 12, 02, 6, 0, 0); ZonedDateTime nyZdt = ldt.atZone(nyZone); ZonedDateTime laZdt = ldt.atZone(laZone); Duration d = Duration.between(nyZdt, laZdt); System.out.println(d);
與正確答案是PT3H但我是一個有點困惑在這裏,如果書中給出錯誤的答案或沒有?
鑑於紐約時間比洛杉磯提前3小時,是否意味着,例如,紐約是5:00,然後洛杉磯將是2:00。所以Duration.between(5,2)應該是PT-3H因爲根據的Javadoc:The result of this method can be a negative period if the end is before the start. To guarantee to obtain a positive duration call abs() on the result.
,並且在這種情況下「2」是之前「5」所以結果應該是PT-3H,不是PT3H。
您認爲哪一個是正確的?
在洛杉磯早上6點的時候,紐約市早上9點。所以在洛杉磯早上6點在紐約時間上午3點發生。 –
對於次要的nit:除非你真的打算以八進制編寫它們,否則不要將整數文字前綴爲零。 –
在你的例子中,'nyZdt' =紐約早上6點,在**'laZdt' =洛杉磯早上6點之前是3小時**,所以在開始之前結束時不是**。 – Jesper