在我的代码的两个不同部分中,我使用ZonedDateTime.of()
来创建实例。在两者中,我使用与ZoneId zoneId = ZoneId.of("Brazil/Acre");
然后在将实例与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);
我很高兴知道我的代码出了什么问题。
答案 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]
}
}