【发布时间】:2017-10-05 20:19:15
【问题描述】:
public static void main(String[] args) {
LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ZonedDateTime.of(ldt, ZoneId.systemDefault());
Instant instant = Instant.from(zdt);
Timestamp timestamp = Timestamp.from(instant);
System.out.println(ldt + "\n");
System.out.println(zdt + "\n");
System.out.println(instant + "\n");
System.out.println(timestamp + "\n");
}
然后打印出来:
2017-05-07T18:13:26.969
2017-05-07T18:13:26.969-04:00[America/New_York]
2017-05-07T22:13:26.969Z
2017-05-07 18:13:26.969
如何使 SQL Timestamp 与 Instant 在同一时间保存?我需要能够从任何地方获取Timestamp 并将其转换为它碰巧在世界那个地方的任何时间。问题是它一直保存与我的系统时钟设置的时间相同。
【问题讨论】:
-
这在使用不存储时区的 oracle
DATE列时为我完成了这项工作。Timestamp.valueOf(ZonedDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneOffset.UTC).toLocalDateTime())