2014-08-27 69 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] 
    } 
}