我正在阅读一些不发送典型内容的 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 EDT03 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);
Run Code Online (Sandbox Code Playgroud)
输出:
2021-05-25T04:00:00Z
2021-06-03T10:35:00Z
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |