如何将字符串转换为本地日期时间,如何解决字符串格式"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'