Java.text.ParseException: неразборчивая дата: «2018-07-22T14: 00: 00-03: 00»

    @Override
public void onBindViewHolder(AirListAdapter.AirListViewHolder holder, int position) {
    final Flight flight = flightList.get(position);

    DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    try {
        Date date = format.parse(flight.getRoutePoints().get(0).getDepartureTime());
        holder.departureTime.setText(date.toString());

    } catch (ParseException e) {
        e.printStackTrace();
    }

    holder.airportName.setText(flightList.get(position).getRoutePoints().get(0).getLocation().getAirport_name());
    holder.airportNameDestination.setText(flightList.get(position).getRoutePoints().get(0).getDestination().getAirportName());

}

PS: Unparseable date: "2018-07-22T14: 00: 00-03: 00" равно getDepartureTime.

Помоги мне, пожалуйста.

-03:00 не равен буквальному 'Z'. Не цитируйте Z. --- Собственно заменить 'Z' на X.
Andreas 25.09.2018 22:52

Ближе к дубликату: Java SimpleDateFormat для часового пояса с разделителем двоеточия?. Посмотрите ответы, используя OffsetDateTime, например: OffsetDateTime.parse( "2018-07-22T14:00:00-03:00" )

Basil Bourque 26.09.2018 02:37

В качестве отступления рассмотрите возможность отбросить давно устаревший и общеизвестно проблемный SimpleDateFormat и его друзей и добавить ThreeTenABP в свой проект Android, чтобы использовать java.time, современный API даты и времени Java. С ним намного приятнее работать.

Ole V.V. 26.09.2018 09:29

Пояснение: для нулевого (= UTC) часового пояса отображается Z, иначе +/- чч: мм. Таким образом, ваш формат даты будет принимать только даты в формате UTC.

Joop Eggen 26.09.2018 09:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
1 628
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Замените свой SimpleDateFormat следующим:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");

Информация о часовом поясе в вашей строке - это часовой пояс ISO 8601, который представлен X. Кроме того, вы не хотите цитировать X, поскольку вам не нужна настоящая буква X.

Спасибо. Я получил результат: 22 июля, 17:00:00 GMT + 00: 00 2018. Что мне делать, чтобы был выход дд / ММ / гггг, 14:00

Alan Bastos 25.09.2018 23:18

К вашему сведению, ужасно неприятные старые классы даты и времени, такие как java.util.Date, java.util.Calendar и java.text.SimpleDateFormat, теперь являются наследие, вытесненными классами java.time, встроенными в Java 8 и новее. См. Руководство от Oracle. Вместо этого здесь работает OffsetDateTime.

Basil Bourque 26.09.2018 02:37

Вопрос помечен как android, и (очень) к сожалению, Android не получает функции Java в обычном режиме. Однако существует множество сторонних библиотек значительно-better-than-java.util.Date, доступных для использования.

Ben P. 26.09.2018 02:59

Я считаю, что лучшей сторонней библиотекой будет библиотека ThreeTenABP, бэкпорт java.time, современного API даты и времени Java для более ранней версии Android. Практически не сторонняя библиотека, поскольку ядро ​​было разработано теми же людьми, что и java.time.

Ole V.V. 26.09.2018 09:45

Другие вопросы по теме