java - 从 `java.time.Instant` 到 `java.util.Date` 的转换添加了 UTC 偏移量

标签 java java.util.date

我似乎误解了 java.util.Datejava.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 在这种情况下使用偏移量。

最佳答案

DateInstant 均不特定于时区。 区别在于打印它们的时间。

Instant.toString() 以 UTC 时区的 ISO-8601 表示形式打印。

Date.toString() 以您当前的时区打印它。

这就是您看到差异的原因。

关于java - 从 `java.time.Instant` 到 `java.util.Date` 的转换添加了 UTC 偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46421736/

相关文章:

java - 将 android studio 上的 SQLite 数据库与 Web 服务器上的 MySQL 数据库同步

java - 以秒为单位获取日期表示?

java - Java 中的 Date.getTime() 在不同的服务器中返回不同的时间

java - 如何将交货日期设置为 Konik 的 ZUGFeRD 库中的某个时间段?

java - 如何创建具有特定格式的 Date 对象

java - 尝试获取在android中绘制的每个随机圆的x,y坐标

java - 在 OSGi 应用程序中获取 Eclipse 项目信息

java - 是否可以限制单个 WAR 应用程序在 Tomcat 中的内存?

java - 如何使用 selenium java 下载 pdf 文件?

java - 未为对象类型定义getTime()方法-怎么了?