我正在尝试将以下日期时间字符串解析为 LocalDateTimeObject,但是我无法识别日期时间字符串的格式。
2021 年 10 月 9 日星期六 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 中的任何一个匹配.
如果没有,那么你必须自己制作Formatter
使用 .ofPattern(String pattern)
或 .ofPattern(String pattern, Locale locale)
.为此,您可以看到所有已定义的模式字母 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
关于java - 将带有偏移字符串的日期时间解析为 LocalDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69505018/