Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert time to " time ago " in android

My server. It return time :

"2016-01-24T16:00:00.000Z" 

I want

1 : convert to String.

2 : I want it show " time ago " when load it from server.

Please. Help me!

like image 527
anh thang Bui Avatar asked Mar 08 '16 03:03

anh thang Bui


People also ask

How do you calculate time ago?

This method divides the difference of current time and the given time by the TimeGranularity value in milliseconds. Consequently, we can roughly calculate the amount of time that has passed since the given time in the specified time granularity. We used the getCurrentTime() method in order to get the current time.


1 Answers

I see mainly three ways:

a) built-in options using SimpleDateFormat and DateUtils

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");   sdf.setTimeZone(TimeZone.getTimeZone("GMT"));   try {          long time = sdf.parse("2016-01-24T16:00:00.000Z").getTime();          long now = System.currentTimeMillis();          CharSequence ago =                     DateUtils.getRelativeTimeSpanString(time, now, DateUtils.MINUTE_IN_MILLIS);         } catch (ParseException e) {             e.printStackTrace();         } 

b) external library ocpsoft/PrettyTime (based on java.util.Date)

Here you have to use SimpleDateFormat, too, to produce the time-result as interpretation of "2016-01-24T16:00:00.000Z".

import below lib in your app

implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'

PrettyTime prettyTime = new PrettyTime(Locale.getDefault()); String ago = prettyTime.format(new Date(time)); 

c) using my library Time4A (heavyweight but with best i18n-support)

Moment moment = Iso8601Format.EXTENDED_DATE_TIME_OFFSET.parse("2016-01-24T16:00:00.000Z"); String ago = PrettyTime.of(Locale.getDefault()).printRelativeInStdTimezone(moment); 
like image 130
Meno Hochschild Avatar answered Sep 24 '22 17:09

Meno Hochschild