Custom Format For Relative Time Span
I'm trying to create an custom format to display the elapsed time. Now I'm using: CharSequence relativeTimeSpan = DateUtils.getRelativeTimeSpanString( dateObject.getTime(),
Solution 1:
i have done this in my twitter module
publicstatic String getTimeString(Date fromdate) {
long then;
then = fromdate.getTime();
Datedate=newDate(then);
StringBufferdateStr=newStringBuffer();
Calendarcalendar= Calendar.getInstance();
calendar.setTime(date);
Calendarnow= Calendar.getInstance();
intdays= daysBetween(calendar.getTime(), now.getTime());
intminutes= hoursBetween(calendar.getTime(), now.getTime());
inthours= minutes / 60;
if (days == 0) {
intsecond= minuteBetween(calendar.getTime(), now.getTime());
if (minutes > 60) {
if (hours >= 1 && hours <= 24) {
dateStr.append(hours).append("h");
}
} else {
if (second <= 10) {
dateStr.append("Now");
} elseif (second > 10 && second <= 30) {
dateStr.append("few seconds ago");
} elseif (second > 30 && second <= 60) {
dateStr.append(second).append("s");
} elseif (second >= 60 && minutes <= 60) {
dateStr.append(minutes).append("m");
}
}
} elseif (hours > 24 && days <= 7) {
dateStr.append(days).append("d");
} else {
dateStr.append(twtimeformat.format(date));
}
return dateStr.toString();
}
publicstaticintminuteBetween(Date d1, Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / DateUtils.SECOND_IN_MILLIS);
}
publicstaticinthoursBetween(Date d1, Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / DateUtils.MINUTE_IN_MILLIS);
}
publicstaticintdaysBetween(Date d1, Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / DateUtils.DAY_IN_MILLIS);
}
Solution 2:
Create One method for get Date difference like this
publicstatic String getDateDifferenceForDisplay(Date inputdate) {
Calendarnow= Calendar.getInstance();
Calendarthen= Calendar.getInstance();
now.setTime(newDate());
then.setTime(inputdate);
// Get the represented date in millisecondslongnowMs= now.getTimeInMillis();
longthenMs= then.getTimeInMillis();
// Calculate difference in millisecondslongdiff= nowMs - thenMs;
// Calculate difference in secondslongdiffMinutes= diff / (60 * 1000);
longdiffHours= diff / (60 * 60 * 1000);
longdiffDays= diff / (24 * 60 * 60 * 1000);
if (diffMinutes < 60) {
return diffMinutes + " m";
} elseif (diffHours < 24) {
return diffHours + " h";
} elseif (diffDays < 7) {
return diffDays + " d";
} else {
SimpleDateFormattodate=newSimpleDateFormat("MMM dd",
Locale.ENGLISH);
return todate.format(inputdate);
}
}
Then you can call it like this
StringdateForDisplay= getDateDifferenceForDisplay(inputDate);
Solution 3:
There is no built-in method/utility for this, but it's quite straightforward to implement one, using available DateUtils
constants:
privatestaticfinalStringABBR_YEAR="y";
privatestaticfinalStringABBR_WEEK="w";
privatestaticfinalStringABBR_DAY="d";
privatestaticfinalStringABBR_HOUR="h";
privatestaticfinalStringABBR_MINUTE="m";
publicstatic String getAbbreviatedTimeSpan(long timeMillis) {
longspan= Math.max(System.currentTimeMillis() - timeMillis, 0);
if (span >= DateUtils.YEAR_IN_MILLIS) {
return (span / DateUtils.YEAR_IN_MILLIS) + ABBR_YEAR;
}
if (span >= DateUtils.WEEK_IN_MILLIS) {
return (span / DateUtils.WEEK_IN_MILLIS) + ABBR_WEEK;
}
if (span >= DateUtils.DAY_IN_MILLIS) {
return (span / DateUtils.DAY_IN_MILLIS) + ABBR_DAY;
}
if (span >= DateUtils.HOUR_IN_MILLIS) {
return (span / DateUtils.HOUR_IN_MILLIS) + ABBR_HOUR;
}
return (span / DateUtils.MINUTE_IN_MILLIS) + ABBR_MINUTE;
}
Post a Comment for "Custom Format For Relative Time Span"