【发布时间】:2021-11-03 09:08:26
【问题描述】:
我在从字符串转换为 LocalDateTime 并将当前月份添加 3 个月时遇到问题。
这是我的代码:
String str = "13/11/2020";
LocalDateTime dateTime = LocalDateTime.parse(str, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
dateTime.plusMonths(3); // => output: 13/02/2021
System.out.println(dateTime);
但是当我运行它时,我得到了以下异常:
java.time.format.DateTimeParseException: Text '13/11/2020' could not be parsed at index 2
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) ~[?:1.8.0_144]
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) ~[?:1.8.0_144]
at java.time.LocalDateTime.parse(LocalDateTime.java:492) ~[?:1.8.0_144]
我该如何解决这个问题?非常感谢
【问题讨论】:
-
您正在使用模式
dd-MM-yyyy来解析模式dd/MM/yyyy的String。dd/MM/uuuu... 相应地调整DateTimeFormatter.ofPattern(...)中的模式。索引 2 在您的String中是-,在您的模式中是/。 -
您的模式与您的输入不匹配。你为什么期望这会奏效?你觉得
"dd-MM-yyyy"是干什么用的? -
是的,那么,我如何使用 13-11-2020 格式进行解析?
-
“解析”表示阅读。这并不意味着转换。如果要转换,需要先用“dd/MM/yyyy”解析,然后用“dd-MM-yyyy”格式化。
标签: java datetime java-8 localdate