我正在为 Java OCP 测试做准备,在模拟测试中有一个关于 Java DateTime 的问题,如下所示:
鉴于纽约比洛杉矶早 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,但我有点困惑,这本书是否给出了错误答案?
假设 NY 比 LA 早 3 小时,这是否意味着,例如,NY 是 5:00,然后 LA 是 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。
你怎么看,哪一个是正确的?