将java.time.Instant转换为没有时区偏移的java.sql.Timestamp。

15 浏览
0 Comments

将java.time.Instant转换为没有时区偏移的java.sql.Timestamp。

在我正在开发的应用程序中,我需要将java.time.Instant对象转换为java.sql.Timestamp。当我像这样创建Instant对象时:

Instant now = Instant.now();

我得到的结果是2017-03-13T14:28:59.970Z。当我尝试像这样创建Timestamp对象时:

Timestamp current = Timestamp.from(now);

我得到的结果是2017-03-13T16:28:59.970Z。结果相同,但是多了2个小时的延迟。

有人可以解释为什么会出现这种情况,并给我提供一个解决这个问题而不需要这个延迟的答案吗?

当我像这样创建时:

LocalDateTime ldt = LocalDateTime.ofInstant(Instant.now(), ZoneOffset.UTC);
Timestamp current = Timestamp.valueOf(ldt);

一切都正常,但我想避免转换。有没有办法只使用Instant对象来实现这个?

0