Подтвердить что ты не робот

Android getRelativeTimeSpanString() ошибка?

используя встроенный метод getRelativeTimeSpanString() в android DateUtil Я не могу получить "минуты назад", "дни назад" и т.д. время, прошедшее с ответом, что в документации указано, что я должен получить, вместо этого получаю результат, просто отображает фактическую дату таким образом, как "может 12 2010", не уверен, что это ошибка или что, но Ive попробовал как getRelativeTimeSpanString (long time, long now, long minResolution), так и getRelativeTimeSpanString (long startTime), оба просто вернули фактическую дату переменной "long time"

вот мой код

private void setJoineddate() {
    Date currentDate = new Date();
    long currentDateLong = currentDate.getTime();
    long oldDate = join_date.getTime();

    CharSequence relativeTime = DateUtils
                         .getRelativeTimeSpanString(oldDate, currentDateLong, 0);
    joindate.setText(relativeTime);

}
4b9b3361

Ответ 1

Не ошибка. getRelativeTimeSpanString будет давать только относительную строку времени в течение одной недели во времени. Поэтому, если вы используете DateUtils.getRelativeTimeSpanString(time2, now, 0L, DateUtils.FORMAT_ABBREV_RELATIVE) со следующими значениями

long now = System.currentTimeMillis();
long time2 = now - DateUtils.WEEK_IN_MILLIS;

вы получите 1 October, если сегодня 8 October, но

long now = System.currentTimeMillis();
long time2 = now - DateUtils.WEEK_IN_MILLIS + 1;

предоставит вам 7 days ago.

Ответ 2

Попробуйте этот код

DateUtils.getRelativeTimeSpanString(oldDate, currentDateLong,
    0L, DateUtils.FORMAT_ABBREV_ALL);

Он вернет Just now, 3 minutes ago и так далее. Прочитайте документацию и сыграйте с третьим параметром, чтобы изменить строки, возвращаемые функцией.

Ответ 3

У меня была такая же проблема. Я тестировал свое приложение в эмуляторе, но затем я решил установить приложение на своем nexus 7, чтобы посмотреть, как он выглядит на устройстве, и относительное время было в порядке.

Оказывается, что дата/время эмулятора по-прежнему установлено на исходную дату создания эмулятора. Я думаю, что это потому, что я запускаю из моментального снимка, но по какой-то причине дата/время автоматического обновления не работало. Я вручную изменил время в эмуляторе и магически, относительное время было таким, как ожидалось.

Не забудьте также изменить часовой пояс.