如何将Twitter API日期解析为java.time.Instant?

时间:2017-10-19 00:00:32

标签: java time java-time datetime-parsing

我正在尝试将来自Twitter API的日期从Java 8解析为新的Instant类.FYI,这是格式Wed Aug 09 17:11:53 +0000 2017

我不想处理/设置时区,因为已经在字符串中指定了一个时区。我只想要一个Instant实例。

2 个答案:

答案 0 :(得分:1)

关注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

2017-08-09T17:11:53Z

Twitter documentation似乎偏移始终为+0000。根据您对此信任程度的强烈程度,您可以在格式模式中使用较小的x或大写Z而非资本X。如果您想要更严格的验证,在转换为OffsetDateTime之前,您还可以检查.getOffset().equals(ZoneOffset.UTC)的{​​{1}}是否为真。

答案 1 :(得分:0)

找到解决方案

Instant.from(DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dateStr))