如何将 Twitter API 日期解析为 java.time.Instant?
How can I parse Twitter API dates into java.time.Instant?
我正在尝试将来自 Twitter API 的日期解析为来自 Java 的新 Instant
class 8. 仅供参考,这是格式 Wed Aug 09 17:11:53 +0000 2017
.
我不想处理/设置时区,因为字符串中已经指定了一个时区。我只想要一个 Instant
实例。
找到解决方案
Instant.from(DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dateStr))
关注documentation of DateTimeFormatter
:
DateTimeFormatter dtf
= DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss X uuuu", Locale.ROOT);
Instant asInstant = OffsetDateTime.parse(dateStr, dtf).toInstant();
对于您的示例字符串,结果是 Instant
of
2017-08-09T17:11:53Z
从 Twitter documentation 看来偏移量总是 +0000
。根据您对这种情况的信任程度,您可以在格式模式中使用小 x
或大写 Z
而不是大写 X
。如果您想要更严格的验证,您还可以在转换为 Instant
.
之前检查 OffsetDateTime
的 .getOffset().equals(ZoneOffset.UTC)
是否为真
我正在尝试将来自 Twitter API 的日期解析为来自 Java 的新 Instant
class 8. 仅供参考,这是格式 Wed Aug 09 17:11:53 +0000 2017
.
我不想处理/设置时区,因为字符串中已经指定了一个时区。我只想要一个 Instant
实例。
找到解决方案
Instant.from(DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dateStr))
关注documentation of DateTimeFormatter
:
DateTimeFormatter dtf
= DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss X uuuu", Locale.ROOT);
Instant asInstant = OffsetDateTime.parse(dateStr, dtf).toInstant();
对于您的示例字符串,结果是 Instant
of
2017-08-09T17:11:53Z
从 Twitter documentation 看来偏移量总是 +0000
。根据您对这种情况的信任程度,您可以在格式模式中使用小 x
或大写 Z
而不是大写 X
。如果您想要更严格的验证,您还可以在转换为 Instant
.
OffsetDateTime
的 .getOffset().equals(ZoneOffset.UTC)
是否为真