如何将字符串转换为本地日期时间,如何解决字符串格式"yyyymmddhhMMss"LocalDate



如何将字符串转换为本地日期时间,如何解决字符串格式"yyyymmddhhMMss"LocalDateTime

String dateTime = "20221120000000";
LocalDateTime localDateTime = LocalDateTime.parse(dateTime);

Exception in thread "main" java.time.format.DateTimeParseException: Text '20221120000000' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1948)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1850)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at java.time.LocalDateTime.parse(LocalDateTime.java:477)
at com.company.Main.main(Main.java:21)

应该这样做:

String dateTimeString = "20221120000000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);

如果你不想使用DateTimeFormatter,你的String必须是ISO格式

编辑:它不在问题中,但你在其他地方说:

我想把它转换成这个格式("yyyy-MM-dd HH:mm:ss")…

LocalDateTime不能有格式(它的toString方法总是产生ISO 8601格式)。因此,要获得特定的格式,您需要再次转换为String:

DateTimeFormatter wantedFormatFormatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(wantedFormatFormatter);
System.out.println(formattedDateTime);

这个输出:

2022-11-20就是

(我希望您没有期望使用您提到的格式的LocalDateTime。如果你确实看到了这个问题:不能在LocalDateTime中去掉'T'

最新更新