Skip to content Skip to sidebar Skip to footer

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"