我正在尝试将来自Twitter API的日期从Java 8解析为新的Instant
类.FYI,这是格式Wed Aug 09 17:11:53 +0000 2017
。
我不想处理/设置时区,因为已经在字符串中指定了一个时区。我只想要一个Instant
实例。
答案 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))