将带有偏移字符串的日期时间解析为 LocalDateTime

Parse datetime with offset string to LocalDateTime

我正在尝试将以下日期时间字符串解析为 LocalDateTimeObject,但是我无法识别日期时间字符串的格式。

Sat, 09 Oct 2021 02:10:23 -0400

    String s = "Sat, 09 Oct 2021 02:10:23 -0400";
    DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
    LocalDateTime dateTime = LocalDateTime.parse(s, formatter);
    System.out.println(dateTime);

如何确定上述字符串的模式?

您应该首先检查日期字符串是否匹配任何 Predefined Formatters

如果没有,那么您必须使用 .ofPattern(String pattern).ofPattern(String pattern, Locale locale) 创建自己的 Formatter。为此,您可以在 格式和解析模式 .

部分查看所有已定义的模式字母 here

对于您的示例,您可以使用 DateTimeFormatter.RFC_1123_DATE_TIME:

DateTimeFormatter formatter = DateTimeFormatter.RFC_1123_DATE_TIME;
OffsetDateTime dateTime = OffsetDateTime.parse(s, formatted);

或:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z");
OffsetDateTime dateTime = OffsetDateTime.parse(s, formatted);

请注意,OffsetDateTime 用于表示与 UTC 有偏差的日期时间。


 Symbol  Meaning       
 ------  -------        
   E     day-of-week 
   d     day-of-month
   M     month-of-year
   y     year-of-era
   H     hour-of-day (0-23)
   m     minute-of-hour
   s     second-of-minute
   Z     zone-offset