Created
December 5, 2016 06:32
-
-
Save adib2149/5875d6700d009f1743495bf83c3239ef to your computer and use it in GitHub Desktop.
The function gives time difference between local time and time sent from server in the format that is readable to human, i.e, "3 hours ago", "1 day ago" etc.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String processTime(String s) { | |
// parse server time | |
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); | |
Date reviewDate = null; | |
try { | |
reviewDate = sdf.parse(s); | |
}catch(Exception ex){ | |
ex.printStackTrace(); | |
} | |
// get present time | |
Calendar cal = Calendar.getInstance(); | |
Date presentDate = cal.getTime(); | |
// get timezone difference | |
Calendar mCalendar = new GregorianCalendar(); | |
TimeZone mTimeZone = mCalendar.getTimeZone(); | |
int mGMTOffset = mTimeZone.getRawOffset(); | |
//long value = TimeUnit.HOURS.convert(mGMTOffset, TimeUnit.MILLISECONDS); | |
//difference between server time and current time, minus timezone, in milliseconds | |
// server: GMT, present: LOCALTIME | |
long difference = presentDate.getTime() - reviewDate.getTime() - mGMTOffset; | |
// just log input times | |
System.out.println("presentDate : " + presentDate); | |
System.out.println("reviewDate : "+ reviewDate); | |
System.out.println("different : " + difference); | |
// now, format the text according to difference | |
long secondsInMilli = 1000; | |
long minutesInMilli = secondsInMilli * 60; | |
long hoursInMilli = minutesInMilli * 60; | |
long daysInMilli = hoursInMilli * 24; | |
long monthsInMilli = daysInMilli * 30; | |
long yearsInMilli = monthsInMilli * 12; | |
long elapsedYears = difference / yearsInMilli; | |
difference = difference % yearsInMilli; | |
long elapsedMonths = difference / monthsInMilli; | |
difference = difference % monthsInMilli; | |
long elapsedDays = difference / daysInMilli; | |
difference = difference % daysInMilli; | |
long elapsedHours = difference / hoursInMilli; | |
difference = difference % hoursInMilli; | |
long elapsedMinutes = difference / minutesInMilli; | |
difference = difference % minutesInMilli; | |
long elapsedSeconds = difference / secondsInMilli; | |
System.out.printf( | |
"%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n", | |
elapsedYears, elapsedMonths ,elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds); | |
String differenceText = "0 second ago"; | |
if (elapsedYears > 0) { | |
if (elapsedYears == 1) | |
differenceText = elapsedYears + " year ago"; | |
else | |
differenceText = elapsedYears + " years ago"; | |
} else if (elapsedMonths > 0) { | |
if (elapsedMonths == 1) | |
differenceText = elapsedMonths + " month ago"; | |
else | |
differenceText = elapsedMonths + " months ago"; | |
} else if (elapsedDays > 0) { | |
if (elapsedDays == 1) | |
differenceText = elapsedDays + " day ago"; | |
else | |
differenceText = elapsedDays + " days ago"; | |
} else if (elapsedHours > 0) { | |
if (elapsedHours == 1) | |
differenceText = elapsedHours + " hour ago"; | |
else | |
differenceText = elapsedHours + " hours ago"; | |
} else if (elapsedMinutes > 0) { | |
if (elapsedMinutes == 1) | |
differenceText = elapsedMinutes + " minute ago"; | |
else | |
differenceText = elapsedMinutes + " minutes ago"; | |
} else if (elapsedSeconds > 0) { | |
if (elapsedSeconds == 1) | |
differenceText = elapsedSeconds + " second ago"; | |
else | |
differenceText = elapsedSeconds + " seconds ago"; | |
} | |
return differenceText; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment