如何制作java.sql.Timestamp UTC时间?

Cpt*_*RD0 5 java sql timestamp jdbc

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");
}
Run Code Online (Sandbox Code Playgroud)

它打印:

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
Run Code Online (Sandbox Code Playgroud)

如何Timestamp在同一时间进行SQL 保存Instant?我需要能够Timestamp从任何地方获取并将其转换为它在世界的任何时间.问题在于它与我的系统时钟恰好设置在同一时间保存.

Joe*_*e C 11

你最好Timestamp从a LocalDateTime而不是从a获得Instant.

第一步是将你的ZonedDateTime转换为GMT:

ZonedDateTime gmt = zdt.withZoneSameInstant(ZoneId.of("GMT"));
Run Code Online (Sandbox Code Playgroud)

然后你可以Timestamp通过以下方式将其转换为LocalDateTime:

Timestamp timestamp = Timestamp.valueOf(gmt.toLocalDateTime());
Run Code Online (Sandbox Code Playgroud)