How to calculate relative time like facebook

11 April 2011 by Rick ~ 1 Comment 1781 views

I’ve found this cool snippet witch returns the relative time from a given date.

Just like facebook does posted 20 minutes ago.

You can translate it from English to any language. Just make sure you edit the $periods array.

function RelativeTime( $timestamp ){
    if( !is_numeric( $timestamp ) ){
        $timestamp = strtotime( $timestamp );
        if( !is_numeric( $timestamp ) ){
            return "";
        }
    }

    $difference = time() - $timestamp;
        // Customize in your own language.
    $periods = array( "sec", "min", "hour", "day", "week", "month", "years", "decade" );
    $lengths = array( "60","60","24","7","4.35","12","10");

    if ($difference > 0) { // this was in the past
        $ending = "ago";
    }else { // this was in the future
        $difference = -$difference;
        $ending = "to go";
    }
    for( $j=0; $difference>=$lengths[$j] and $j < 7; $j++ )
        $difference /= $lengths[$j];
    $difference = round($difference);
    if( $difference != 1 ){
                // Also change this if needed for an other language
        $periods[$j].= "s";
    }
    $text = "$difference $periods[$j] $ending";
    return $text;
}

Subscribe by E-mail:

« »

One Comment

  1. Genius… Will try to apply it on an iPhone app… thanks

     

Add a Comment

Use [code] example piece of code [/code] to insert code into your comment.