首页 > 解决方案 > 无法解析文本“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);

标签: javadatejava-timedate-parsingdatetimeparseexception

解决方案


您的代码块抛出的异常很可能是由您的DateTimeFormatter. 正如您的问题下面已经评论过的那样,您在y一年中有 4 位数字使用两个。
因此,您可以将模式更改为"ddMMMyyyy",这可能会起作用。

另外,我强烈建议您构建和使用不区分大小写的解析输入字符串的DateTimeFormatterwith :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

推荐阅读