@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.
Помоги мне, пожалуйста.
Ближе к дубликату: Java SimpleDateFormat для часового пояса с разделителем двоеточия?. Посмотрите ответы, используя OffsetDateTime, например: OffsetDateTime.parse( "2018-07-22T14:00:00-03:00" )
В качестве отступления рассмотрите возможность отбросить давно устаревший и общеизвестно проблемный SimpleDateFormat и его друзей и добавить ThreeTenABP в свой проект Android, чтобы использовать java.time, современный API даты и времени Java. С ним намного приятнее работать.
Пояснение: для нулевого (= UTC) часового пояса отображается Z, иначе +/- чч: мм. Таким образом, ваш формат даты будет принимать только даты в формате UTC.




Замените свой 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
К вашему сведению, ужасно неприятные старые классы даты и времени, такие как java.util.Date, java.util.Calendar и java.text.SimpleDateFormat, теперь являются наследие, вытесненными классами java.time, встроенными в Java 8 и новее. См. Руководство от Oracle. Вместо этого здесь работает OffsetDateTime.
Вопрос помечен как android, и (очень) к сожалению, Android не получает функции Java в обычном режиме. Однако существует множество сторонних библиотек значительно-better-than-java.util.Date, доступных для использования.
Я считаю, что лучшей сторонней библиотекой будет библиотека ThreeTenABP, бэкпорт java.time, современного API даты и времени Java для более ранней версии Android. Практически не сторонняя библиотека, поскольку ядро было разработано теми же людьми, что и java.time.
-03:00не равен буквальному'Z'. Не цитируйтеZ. --- Собственно заменить'Z'наX.