我正在尝试转换String
to LocalDate
using DateTimeFormatter
,但我收到一个异常:
java.time.format.DateTimeParseException
: Text '2021-10-31' 无法在索引 5 处进行解析
我的代码是
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu");
String text = "2021-10-31";
LocalDate date = LocalDate.parse(text, formatter);
我正在尝试从输入日期进行转换2021-10-31
to 31-Oct-2021
.
怎么了?
我的代码中做错了什么。
您的代码指定了模式dd-MMM-uuuu
,但您尝试解析文本2021-10-31
这根本不符合这种模式。
您的字符串的正确模式是yyyy-MM-dd
。请参阅文档 https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/time/format/DateTimeFormatter.html格式化程序的详细信息。
特别要注意日期和月份的顺序dd-MMM
vs MM-dd
。以及月份数量MMM
。与您当前模式匹配的字符串将是31-Oct-2021
.
改变模式
来自评论:
我的输入日期是 - 2021-10-31 需要转换为 - 31-Oct-2021
您可以通过以下方式轻松更改日期模式:
- 使用模式解析输入日期
yyyy-MM-dd
- 然后使用模式将其格式化回字符串
dd-MMM-yyyy
.
用代码来说,就是:
DateTimeFormatter inputPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter outputPattern = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
String input = "2021-10-31";
LocalDate date = LocalDate.parse(text, inputPattern);
String output = date.format(outputPattern);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)