我試圖將來自Twitter API的日期解析爲來自Java 8的新Instant
類。僅供參考,這是格式Wed Aug 09 17:11:53 +0000 2017
。如何將Twitter API日期解析爲java.time.Instant?
我不想處理/設置時區,因爲已經在字符串中指定了一個時區。我只想要一個Instant
實例。
我試圖將來自Twitter API的日期解析爲來自Java 8的新Instant
類。僅供參考,這是格式Wed Aug 09 17:11:53 +0000 2017
。如何將Twitter API日期解析爲java.time.Instant?
我不想處理/設置時區,因爲已經在字符串中指定了一個時區。我只想要一個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();
你的榜樣字符串的結果是
2017-08-09T17:11:53Z
它從Twitter documentation似乎是一個Instant
將那偏移永遠是+0000
。根據您信任這種情況的強烈程度,您可以使用小格式x
或大寫字母Z
而不是大寫字母X
。如果你想要更嚴格的驗證,你也可以在轉換爲Instant
之前檢查OffsetDateTime
的.getOffset().equals(ZoneOffset.UTC)
是否爲真。
你確定這解析了字符串'Wed Aug 09 17:11:53 +0000 2017'? – 2017-10-19 00:28:43
我得到'java.time.format.DateTimeParseException:Text'Wed Aug 09 17:11:53 +0000 2017'無法在索引0處解析。 –