Текст '28Feb2020' не может быть проанализирован, не проанализированный текст найден в индексе 7
Введите текст 20FEB2020
Следующий блок кода генерирует
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 ответ
Исключение, которое генерирует ваш блок кода, скорее всего, вызвано шаблоном вашего. Как уже было сказано под вашим вопросом, вы используете два
y
за год, состоящий из 4 цифр.
Итак, вы можете изменить шаблон на
"ddMMMyyyy"
, который может сработать.
В качестве альтернативы вы можете напрямую проанализировать такой
String
который содержит аббревиатуры месяцев заглавными буквами без применения
toLowerCase()
на любом
substring
если вы создадите
DateTimeFormatter
который разбирает без учета регистра:
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