与ZonedDateTime.of()不一致

时间:2014-08-27 13:03:29

标签: java

在我的代码的两个不同部分中,我使用ZonedDateTime.of()来创建实例。在两者中,我使用与ZoneId zoneId = ZoneId.of("Brazil/Acre");

定义的相同ZoneId

然后在将实例与before()after()进行比较时,我得到了错误的结果。我观察到两者的时区出奇地不同。打印一个

  

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

打印另一个给出

  

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

注意改变:04:31:12 [巴西/英亩]在一个但04:00 [巴西/英亩]在另一个(后者似乎正确,因为与格林威治时钟的确切4:00小时差异)。

我用以下方式创建了两个:

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

我很高兴知道我的代码出了什么问题。

1 个答案:

答案 0 :(得分: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]
    }
}