繁体   English   中英

与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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM