![](/img/trans.png)
[英]ZonedDateTime.parse(...) vs ZonedDateTime.of(...)
[英]Inconsistency with ZonedDateTime.of()
在代码的两个不同部分中,我使用ZonedDateTime.of()
创建实例。 在这两种方法中,我都使用与ZoneId定义的相同的ZoneId 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);
我很高兴学习我的代码出了什么问题。
因此,您使用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]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.