我正在阅读一些不发送典型的RSS 站点:
2019-06-12T07:17:47Z
-Instant.parse()
可以使用Wed, 12 Jun 2019 03:17:47 -0400
-DateTimeFormatter.RFC_1123_DATE_TIME.parse()
可以使用相反,我得到了这些字符串:
Tue, 25 May 2021 00:00:00 EDT
03 Jun 2021 18:35:00 HKT
我已经尝试过一些自定义模式和 ZonedDateTime + OffsetDateTimeparse()
方法。虽然我还没有找到一种方法来获取我可以转换为Instant
. 我也不能控制源,也不能修复输出格式。
我怎样才能更宽容并解析这些日期时间?
您可以DateTimeFormatter
使用自定义模式创建一个在开始时具有可选的星期几的自定义模式。然后,使用parse
格式化程序的方法,您可以直接指定所需的解析日期时间类型(根据Ole VV 的评论)。另一种方法是首先解析为ZonedDateTime
,然后转换为Instant
.
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("[EEE, ]dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
String input1 = "Tue, 25 May 2021 00:00:00 EDT";
Instant instant1 = formatter.parse(input1, Instant::from);
// Instant instant1 = ZonedDateTime.parse(input1, formatter).toInstant();
System.out.println(instant1);
String input2 = "03 Jun 2021 18:35:00 HKT";
Instant instant2 = formatter.parse(input2, Instant::from);
// Instant instant2 = ZonedDateTime.parse(input2, formatter).toInstant();
System.out.println(instant2);
输出:
2021-05-25T04:00:00Z
2021-06-03T10:35:00Z
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句