2017-02-18 5 views
0

Ich verwende Retrofit 2, um die JSON-Antwort zu empfangen. Ich möchte nur die erhaltene Antwortzeit als verstrichene Zeit wie "vor 03 Minuten" oder "vor 1 Stunde" zeigen. Ich habe alles versucht, was ich Datum und Zeitformat haben konnte, aber war nicht in der Lage, es zu tun.
Ich versuchte "Time Since/Ago" Library for Android/Java konnte es aber nicht tun, weil es die Zeit in Millisekunden benötigt und meine Antwort ist:Nachrüstung 2 - Anzeige der verstrichenen Zeit einer JSON-Antwort

Antwort

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

Mögliches Duplikat der ["Time Since/Ago" -Bibliothek für Android/Java] (http://stackoverflow.com/questions/13018550/time-since-ago-library-for-android-java) – GreyBeardedGeek

+0

@GreyBeardedGeek nein Its nicht ... die obige Antwort ist ungefähr wenn du die Zeit in Millisekunden bekommst, aber in meinem Fall nicht. –

Antwort

0

ich die Antwort gefunden zu haben. Die oben angegebene Zeit ist im Joda Time Format iso8601.

Verwenden Joda Time Library:

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

die Zeit in Millisekunden umrechnen:

:

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

Mit dieser Methode kann es seit/Ago in Abgelaufene Zeit zu konvertieren

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"; } } 
Verwandte Themen