Значение времени, которое я получаю из ответа JSON, имеет формат "sun dd/mm/yyyy - HH:mm"
, и я хочу вместо этого преобразовать его в промежуток времени (10 минут назад, 2 дня назад ...).Для этого я создал метод, который преобразует данный String of dataTimeFormant в формат "X Hours Ago
" и возвращает x hours ago
в формате строки, после чего я могу поместить в textView.
Все кажется правильным, я думаю, ноПри запуске приложения происходит сбой с NullPonterException в строке моего кода, поэтому, возможно, я ошибся.
@RequiresApi(api = Build.VERSION_CODES.N)
public String dateConverter(String dateStringFormat) {
Date date = null;
SimpleDateFormat currentDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z");
try {
date = currentDateFormat.parse(dateStringFormat);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat requireDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDate = requireDateFormat.format(date);
long currentTimeInMilis = 0;
try {
Date currentDateObject = requireDateFormat.parse(currentDate);
currentTimeInMilis = currentDateObject.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
CharSequence timeSpanString = DateUtils.getRelativeTimeSpanString(currentTimeInMilis, System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS);
return timeSpanString.toString();
}
Мой метод onBindView адаптера:
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int i) {
//...
//...
//...
DateConvert converter = new DateConvert();
String postTime = converter.dateConverter(this.news.get(i).getCreated());
viewHolder.articleCreatedDate.setText(postTime);
}
Ошибка logcat указывает на:
String currentDate = requireDateFormat.format(date);
и:
String postTime = converter.dateConverter(this.post.get(i).getCreated());
Я не могу найти причину, потому что, если я уберу вызов этой функции, все будет работать отлично, возможно, есть лучшие способы добиться этого?
Спасибо.