【问题标题】:How can I parse Twitter API dates into java.time.Instant?如何将 Twitter API 日期解析为 java.time.Instant?
【发布时间】:2017-10-19 00:00:31
【问题描述】:

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

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

【问题讨论】:

    标签: java time java-time datetime-parsing


    【解决方案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。如果您想要更严格的验证,您还可以在转换为 Instant 之前检查 OffsetDateTime.getOffset().equals(ZoneOffset.UTC) 是否为真。

    【讨论】:

      【解决方案2】:

      找到解决办法

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

      【讨论】:

      • 你确定这会解析字符串Wed Aug 09 17:11:53 +0000 2017吗?
      • 我收到java.time.format.DateTimeParseException: Text 'Wed Aug 09 17:11:53 +0000 2017' could not be parsed at index 0
      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多