从java.time.instant`转换为java.util.date添加了UTC偏移



我似乎误解了 java.util.Date的转换到 java.time.Instance。我有一些遗留代码需要与之进行,并且此代码在其API中使用java.util.Date

Date API中添加偏移时,我会有些困惑。我了解Date是UTC时间("日期类旨在反映协调的通用时间(UTC)"),但是当我从Instant创建Date时,添加了偏移量:

public class TestDateInstant {
    @Test
    public void instantdate() {
        Instant i = Instant.now();
        System.out.println(i);
        Date d = Date.from(i);
        System.out.println(d);
        assertThat(i, equalTo(d.toInstant()));
    }
}

主张所持,但控制台上的输出为:

2017-09-26T08:24:40.858Z 
Tue Sep 26 10:24:40 CEST 2017

我想知道为什么Date.from在这种情况下使用偏移。

DateInstant都不适合时区。区别是当您打印时。

Instant.toString()在UTC时区中的ISO-8601表示。

Date.toString()将其打印在您当前的时区。

这就是为什么您会看到差异。

最新更新