java - 使用 Java 8 将 UTC 日期字符串转换为 SQL 时间戳

标签 java

我有一个带有时区的 ISO 格式的日期字符串。我必须使用 Java 8.0 将其转换为时间戳,+/- 区域转换为时间 例如

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 添加到日期。

最佳答案

目前您没有执行任何操作来转换该值 - 您使用的是 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/

相关文章:

java - 如何获取 html 值并使其成为 java 变量

java - 使用两个线程连续读取数组

java - Android 6.0 和 View 背景颜色的奇怪问题

java - IntelliJ IDEA logcat 导航

java - 从包含 # 的 url 在 java servlet 之间重定向

java - 我的应用程序无法在谷歌驱动器的 "appDataFolder"中创建文件

java - Felix 如何从更新的包中获取所有依赖包的列表

Java的SWT : Setting the size of Group hides its widgets

java - 如果方法中只需要一个对象字段,应该传递什么作为参数——对象还是字段值?

java - 我们如何从 SWING 应用程序打印文档