如何用日期之间的时间解析 DateTime?
How to parse DateTime with Time between the dates?
我想解析一个日期时间变体,该变体的时间介于两个日期之间。为什么以下内容不起作用?
DateTimeFormatter.ofPattern("E L d HH:mm:ss yyyy").parse("Tue Mar 1 01:29:47 2022")
结果:
java.time.format.DateTimeParseException: Text 'Tue Mar 1 01:29:47 2022' could not be parsed at index 4
我认为你必须确保
- 您为缩写的月份和星期几提供了特定的
Locale
- 您在
DateTimeFormatter
的模式中使用了正确的字符
一年中的一个月使用模式中的字符 M
进行解析,您必须确保使用了正确的语言并且 M
的数量符合要求(例如 EEEE
将解析一周中的一整天,如 "Monday"
)。这可以通过将 Locale
传递给 DateTimeFormatter
来确保。具有单个 d
的模式将解析一个月中没有前导零的天数,而 dd
将需要前导零到一个月中的 single-digit 天。
这是一个解析两个日期时间的示例,一个是 single-digit 月中的某一天,另一个是
DateTimeFormatter customDtf = DateTimeFormatter.ofPattern(
"EEE MMM d HH:mm:ss yyyy",
Locale.ENGLISH
);
System.out.println( // parse a datetime with a two-digit day of month
LocalDateTime.parse("Mon Mar 14 01:29:47 2022", customDtf)
);
System.out.println( // parse a datetime with a one-digit day of month
LocalDateTime.parse("Tue Mar 1 01:29:47 2022", customDtf)
);
如果您在 main
中执行此示例代码,您将获得以下输出:
2022-03-14T01:29:47
2022-03-01T01:29:47
我想解析一个日期时间变体,该变体的时间介于两个日期之间。为什么以下内容不起作用?
DateTimeFormatter.ofPattern("E L d HH:mm:ss yyyy").parse("Tue Mar 1 01:29:47 2022")
结果:
java.time.format.DateTimeParseException: Text 'Tue Mar 1 01:29:47 2022' could not be parsed at index 4
我认为你必须确保
- 您为缩写的月份和星期几提供了特定的
Locale
- 您在
DateTimeFormatter
的模式中使用了正确的字符
一年中的一个月使用模式中的字符 M
进行解析,您必须确保使用了正确的语言并且 M
的数量符合要求(例如 EEEE
将解析一周中的一整天,如 "Monday"
)。这可以通过将 Locale
传递给 DateTimeFormatter
来确保。具有单个 d
的模式将解析一个月中没有前导零的天数,而 dd
将需要前导零到一个月中的 single-digit 天。
这是一个解析两个日期时间的示例,一个是 single-digit 月中的某一天,另一个是
DateTimeFormatter customDtf = DateTimeFormatter.ofPattern(
"EEE MMM d HH:mm:ss yyyy",
Locale.ENGLISH
);
System.out.println( // parse a datetime with a two-digit day of month
LocalDateTime.parse("Mon Mar 14 01:29:47 2022", customDtf)
);
System.out.println( // parse a datetime with a one-digit day of month
LocalDateTime.parse("Tue Mar 1 01:29:47 2022", customDtf)
);
如果您在 main
中执行此示例代码,您将获得以下输出:
2022-03-14T01:29:47
2022-03-01T01:29:47