当前位置: 首页 > 知识库问答 >
问题:

无法分析文本“28Feb2020”,在索引7中找到未分析的文本

申嘉慕
2023-03-14

输入文本为2020年2月20日

以下代码块抛出DateTimeParseException,其中包含无法分析的消息文本“28Feb2020”,在索引7中找到未分析的文本:

String issueDate = abcIssueDate.substring(0, 3)
                  + abcIssueDate.substring(3).toLowerCase();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMMyy", Locale.US);
LocalDate localDate = LocalDate.parse(issueDate, formatter);

共有1个答案

司空玮
2023-03-14

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

或者,如果构建了一个不敏感地分析大小写的DateTimeFormatter,则可以直接分析包含大写月份缩写的字符串,而不必对任何子字符串应用tolowercase():

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);
}

结果是(隐式地使用localdatetostring()方法):

2020-02-20
 类似资料: