使用Java 8将UTC日期字符串隐藏到SQL时间戳

时间:2017-03-17 15:28:15

标签: java

我有一个带有时区的ISO格式的日期字符串。我必须使用Java 8.0将它转换为带有+/- Zone的时间戳到时间 E.g。

2016-10-14T10:12:18.000+02:00需要转换为2016-10-14T08:12:18.000+00:002016-10-14T8:12:18.000Z

String utcDate = "2016-10-14T10:12:18.100+02:00";
ZonedDateTime result = ZonedDateTime.parse(utcDate, DateTimeFormatter.ISO_DATE_TIME);
System.out.println("Parsed: " + result);

输出:

Parsed: 2016-10-14T10:12:18.100+02:00

它不会将区域+02:00添加到日期。

1 个答案:

答案 0 :(得分:1)

目前你没有做任何转换价值的事情 - 你正在使用ZonedDateTime,所以它保留了提供的时区(至少是偏移量)。 (我会使用OffsetDateTime而非ZonedDateTime,因为您实际上没有时区。)

您可以使用withZoneSameInstant

ZonedDateTime utc = result.withZoneSameInstant(ZoneOffset.UTC);

或者只是转换为Instant

Instant instant = result.toInstant();

(然后适当地格式化)。