我有一个带有时区的ISO格式的日期字符串。我必须使用Java 8.0将它转换为带有+/- Zone的时间戳到时间 E.g。
2016-10-14T10:12:18.000+02:00
需要转换为2016-10-14T08:12:18.000+00:00
或2016-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添加到日期。
答案 0 :(得分:1)
目前你没有做任何转换价值的事情 - 你正在使用ZonedDateTime
,所以它保留了提供的时区(至少是偏移量)。 (我会使用OffsetDateTime
而非ZonedDateTime
,因为您实际上没有时区。)
您可以使用withZoneSameInstant
:
ZonedDateTime utc = result.withZoneSameInstant(ZoneOffset.UTC);
或者只是转换为Instant
:
Instant instant = result.toInstant();
(然后适当地格式化)。