java - 无法解析文本“28Feb2020”,在索引 7 处找到未解析的文本
问题描述
输入文本是 20FEB2020
以下代码块抛出DateTimeParseException
消息Text '28Feb2020' could not be parse, unparsed text found at index 7:
String issueDate = abcIssueDate.substring(0, 3)
+ abcIssueDate.substring(3).toLowerCase();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMMyy", Locale.US);
LocalDate localDate = LocalDate.parse(issueDate, formatter);
解决方案
您的代码块抛出的异常很可能是由您的DateTimeFormatter
. 正如您的问题下面已经评论过的那样,您在y
一年中有 4 位数字使用两个。
因此,您可以将模式更改为"ddMMMyyyy"
,这可能会起作用。
另外,我强烈建议您构建和使用不区分大小写的解析输入字符串的DateTimeFormatter
with :DateTimeFormatterBuilder#parseCaseInsensitive
public static void main(String[] args) throws IOException {
String time = "20FEB2020";
// build a DateTimeFormatter that parses case-insensitively
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("ddMMMuuuu")
.toFormatter(Locale.ENGLISH);
LocalDate localDate = LocalDate.parse(time, dtf);
System.out.println(localDate);
}
结果是(隐式使用 的toString()
方法LocalDate
):
2020-02-20
推荐阅读
- magento - Magento 客户商店信用 REST
- c# - 如何在表单上移动图片框,以便当它到达表单末尾时它会循环回到另一侧?
- angular - 如何在 Angular 5 中的页面加载时显示微调器(或其他任何内容)?
- python - 移动到其他房间时移除所有弹丸
- javascript - 如何在 dojo/store/JsonRest 中获取响应标头?
- sql - 尝试将两个查询组合为一个查询
- swift - 强制向下转换后无法分配给类型的不可变表达式
- java - WSO2 和 JPA 配置 (JNDI)
- database - 多个条件 IF AND THEN 语句 SAS
- vba - VBA 使用间接引用另一个工作表