我似乎误解了 java.util.Date
与 java.time.Instance
之间的转换。我有一些遗留代码需要与之交互,而这段代码在其 API 中使用了 java.util.Date
。
当在 Date
API 中添加偏移量时,我有点困惑。据我了解,Date
是 UTC 时间(“Date 类旨在反射(reflect)协调世界时 (UTC)”),但是当我从Instant
添加偏移量:
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
在这种情况下使用偏移量。
最佳答案
Date
或 Instant
均不特定于时区。
区别在于打印它们的时间。
Instant.toString()
以 UTC 时区的 ISO-8601 表示形式打印。
Date.toString()
以您当前的时区打印它。
这就是您看到差异的原因。
关于java - 从 `java.time.Instant` 到 `java.util.Date` 的转换添加了 UTC 偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46421736/