2017-02-18 8 views
0

Я использую Retrofit 2, чтобы получить ответ Json. Я просто хочу показать полученное время отклика как прошедшее время как «03 мин. Назад» или «1 час назад». Я пробовал все, что мне нравилось в формате даты и времени, но не смог это сделать.
Я попытался "Time Since/Ago" Library for Android/Java, но не смог этого сделать, потому что это требуется время в миллисекундах, и мой ответ:Retrofit 2 - Отображение прошедшего времени ответа Json

Response

"publishedAt": "2017-02-17T12:44:01Z" 
+0

Возможный дубликат библиотеки «Время с/Аго» для Android/Java] (http://stackoverflow.com/questions/13018550/time-since-ago-library-for-android-java) – GreyBeardedGeek

+0

@GreyBeardedGeek no Its не ... выше ответ о том, когда и получить время в миллисекундах, но в моем случае его нет. –

ответ

0

Я нашел ответ. Вышеуказанное время находится в формате Joda Time iso8601.

Использование Joda Библиотека Время:

compile 'joda-time:joda-time:2.9.7' 

Преобразование времени в миллисекундах:

long millisSinceEpoch = new DateTime(yourtime).getMillis(); 
String time = getTimeAgo(millisSinceEpoch, context); 

Используйте этот метод, чтобы преобразовать его в Прошедшее время С/назад:

public static String getTimeAgo(long time, Context ctx) { 
    if (time < 1000000000000L) { 
     // if timestamp given in seconds, convert to millis 
     time *= 1000; 
    } 
    long now = System.currentTimeMillis(); 
    if (time > now || time <= 0) { 
     return null; 
    } 
    // TODO: localize 
    final long diff = now - time; 
    if (diff < MINUTE_MILLIS) { 
     return "just now"; 
    } else if (diff < 2 * MINUTE_MILLIS) { 
     return "a minute ago"; 
    } else if (diff < 50 * MINUTE_MILLIS) { 
     return diff/MINUTE_MILLIS + " minutes ago"; 
    } else if (diff < 90 * MINUTE_MILLIS) { 
     return "an hour ago"; 
    } else if (diff < 24 * HOUR_MILLIS) { 
     return diff/HOUR_MILLIS + " hours ago"; 
    } else if (diff < 48 * HOUR_MILLIS) { 
     return "yesterday"; 
    } else { 
     return diff/DAY_MILLIS + " days ago"; 
    } 
}