Skip to content

Instantly share code, notes, and snippets.

@adib2149
Created December 5, 2016 06:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adib2149/5875d6700d009f1743495bf83c3239ef to your computer and use it in GitHub Desktop.
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.
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