我有一个带有时区的 ISO 格式的日期字符串。我必须使用 Java 8.0 将其转换为时间戳,+/- 区域转换为时间 例如
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 添加到日期。
最佳答案
目前您没有执行任何操作来转换该值 - 您使用的是 ZonedDateTime
,因此它保留了所提供的时区(至少是偏移量)。 (我会使用 OffsetDateTime
而不是 ZonedDateTime
,因为您实际上没有时区。)
您可以使用 withZoneSameInstant
:
ZonedDateTime utc = result.withZoneSameInstant(ZoneOffset.UTC);
或者只是转换为即时
:
Instant instant = result.toInstant();
(当然,然后适本地格式化)。
关于java - 使用 Java 8 将 UTC 日期字符串转换为 SQL 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42861443/