java.time.format.DateTimeParseException: текст '13 .05.2018 'не может быть проанализирован в индексе 2 - PullRequest
0 голосов
/ 20 мая 2018

У меня есть websocket, который получает запросы от клиентов в виде JSON строк.Один из запросов, которые я получаю, содержит дату.Я получаю дату как String, но я не могу изменить ее на LocalDate.Это JSON запрос, который я получаю {"type":"dataRequest","startDate":"13.05.2018","endDate":"20.05.2018","interval":"01:01:01"}

Я использую Google's GSON для анализа JSON.

Это код Java, который я использую для получениядату как String и проанализировать как LocalDate.

private List<LocalDate> getStartEndDate(String message){

        List<LocalDate> dates = new ArrayList();
        JsonObject obj = parseJson(message);
        JsonPrimitive date = obj.getAsJsonPrimitive("startDate");
        String dateString = date.toString();
        DateTimeFormatter formater = DateTimeFormatter.ofPattern("dd.MM.yyyy");
        dates.add(LocalDate.parse(dateString, formater));
        date = obj.getAsJsonPrimitive("endDate");
        dateString = date.getAsString();
        LocalDate end = LocalDate.parse(dateString, formater);
        dates.add(end);

        return dates;
    }

1 Ответ

0 голосов
/ 20 мая 2018

Нет проблем

Тип кода, который вы здесь представляете, должен работать.Вы не предоставили достаточно информации для решения проблемы.

См. Этот код, запущенный в режиме реального времени на IdeOne.com .

String input = "20.05.2018" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd.MM.yyyy" );
LocalDate ld = LocalDate.parse( input , f ) ;

ld.toString (): 2018-05-20

Отладка

При отладке такой проблемы сведите проблему к ее основному ядру.В этом случае это означает отказ от всего бизнеса JSON, чтобы сконцентрироваться на том, чтобы синтаксический анализ даты работал сам по себе.

Это также делает намного лучший вопрос о переполнении стека.

ISO 8601

Наилучший способ обмена значениями даты и времени в виде текста - всегда использовать стандартные форматы ISO 8601 .

Классы java.time по умолчанию используют эти стандартные форматы при разборе / генерации строк.См. Выше пример этого в формате ГГГГ-ММ-ДД.

...