DateTimeFormatter класс Exeception DateTimeParseException - PullRequest
1 голос
/ 28 мая 2020

Я хочу получить дату следующих 3 месяцев с даты ввода в устройстве android. для версий выше, чем oreo, я пытался использовать DateTimeFormatter. но я получил эту ошибку "java .time.format.DateTimeParseException: текст '28 / 5/2020 'не может быть проанализирован с индексом 0"

Это моя строка даты ввода = 28/5/2020

   String datestring = edittext_enterServiceDate.getText().toString();
                String dd = datestring.substring(0, 2);
                String mm = datestring.substring(3, 4);
                String yyyy = datestring.substring(5, 9);
                String dateString = dd + "/" + mm + "/" + yyyy;
                LocalDate date = LocalDate.parse(dd + "/" + mm + "/" + yyyy);

                DateTimeFormatter df = DateTimeFormatter.ofPattern("dd/MM/yyyy");
                LocalDate  d1 = LocalDate.parse(dateString, df);

                LocalDate returnvalue
                        = d1.plusMonths(Integer.parseInt(monthList.get(position).getStateId()));
                edittext_nextServiceDate.setText(String.valueOf(returnvalue.toString()));

1 Ответ

3 голосов
/ 28 мая 2020

In do c:

Number: Если количество букв равно единице, то значение выводится с использованием минимального количества цифр и без заполнения.

Используйте формат dd/M/yyyy для строки даты. Он будет анализировать строки даты, такие как 28/5/2020 и 28/12/2020, оба.

DateTimeFormatter df = DateTimeFormatter.ofPattern("dd/M/yyyy");
LocalDate  d1 = LocalDate.parse("28/5/2020", df);
LocalDate  d2 = LocalDate.parse("28/07/2020", df);
LocalDate  d3 = LocalDate.parse("28/12/2020", df);
...