2014-08-27 78 views
0

在我的代碼的兩個不同部分中,我使用ZonedDateTime.of()來創建一個實例。在這兩個我使用相同的區域ID是ZoneId zoneId = ZoneId.of("Brazil/Acre");與ZonedDateTime.of()的不一致性

然後當與before()after()比較的情況下,我得到錯誤的結果。我觀察到兩者的時區有驚人的不同。打印一個給

0013-06-20T00:00-04:31:12 [巴西/英畝]

和印刷的其他給出

2013-06-20T00: 00:21-04:00 [巴西/英畝]

注的變化:4時31分12秒[巴西/英畝]在一個但04:00 [巴西/英畝]在其他(後者似乎正確,因爲確切的4:00小時差異f rom格林威治時鐘)。

我通過以下方式創建兩個:

ZonedDateTime time = ZonedDateTime.of(year, month, day, hours, minutes, seconds, 0, zoneId); 

我會很高興去學習了什麼錯我的代碼。

+0

那麼什麼是在第一個例子中的一年?你使用什麼值來創建這兩個逐字記錄? – Makoto 2014-08-27 13:16:46

+0

你真的是指13年級的公民嗎? – 2014-08-27 13:20:08

回答

0

所以你使用13年,而不是2013:

import java.time.ZoneId; 
import java.time.ZonedDateTime; 

public class X { 
    public static void main(String[] s){ 
     ZoneId zoneId = ZoneId.of("Brazil/Acre"); 
     ZonedDateTime time = ZonedDateTime.of(13, 6, 20, 4, 31, 12, 0, zoneId); 
     System.out.println(time); // gives 0013-06-20T04:31:12-04:31:12[Brazil/Acre] 
     time = ZonedDateTime.of(2013, 6, 20, 4, 31, 12, 0, zoneId); 
     System.out.println(time); //gives 2013-06-20T04:31:12-04:00[Brazil/Acre] 
    } 
}