无法将 String 转换为 LocalDateTime 格式 “YYYYMMDDhhmmss” (周、年) 模式和 (月中的某一天)

Unable to convert String to LocalDateTime format "YYYYMMDDhhmmss" (week year) pattern with (day of month)

提问人:cevelry 提问时间:11/9/2023 更新时间:11/9/2023 访问量:84

问:

我在解析给定的字符串时收到“DateTimeParseException”:

我知道在某些问题上建议使用“yyyy”和“dd”,但我不能使用它们。 我使用 JDK 17

import java.time.format.DateTimeFormatter;
import java.time.*;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYYMMDDhhmmss");
LocalDateTime date = LocalDateTime.parse("20120823151034", formatter);

结果:

Exception in thread "main" java.time.format.DateTimeParseException: Text '20120823151034' could not be parsed at index 0
Java 日期格式

评论

1赞 MadProgrammer 11/9/2023
151034建议该模式需要HHmmss
3赞 MadProgrammer 11/9/2023
所以,使用 Java 17 对我有用。“在某些问题上建议使用'yyyy'和'dd',但我不能使用它们。我使用 JDK 17“ - 对不起,但这对我来说没有意义,JavaDocs 明确指出它们是有效的模式yyyyMMddHHmmss
1赞 Old Dog Programmer 11/9/2023
你看过 stackoverflow.com/questions/26431882/ 吗?
1赞 Old Dog Programmer 11/9/2023
“我知道在某些问题上建议使用'yyyy'和'dd',但我不能使用它们。您应该编辑问题以解释为什么您不能使用它们。

答:

3赞 Arvind Kumar Avinash 11/9/2023 #1

我知道在某些问题上建议使用“yyyy”和“dd”,但是我 不能使用它们。

不仅是“yyyy”和“dd”,您还需要使用“HH”而不是“hh”,因为“hh”仅适用于 am/pm 标记,即 12 小时时间格式。对于带有 am/pm 标记的时间,您需要将“hh”与“a”一起使用,例如“hhmmss a”。查看文档以了解有关它们的更多信息。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
LocalDateTime dt = LocalDateTime.parse("20120823151034", formatter);
System.out.println(dt);

示例运行的输出:

2012-08-23T15:10:34

在线演示

Trail: Date Time 了解有关新式日期时间 API 的更多信息。

评论

1赞 anubhava 11/16/2023
好赶上 vsHHhh