The new web 2.0 displays time and date not in old style manner like 12.30 pm Jan 200 7. The new generation need relative time like 2 hours ago, 6 months ago, 4 years ago, very old etc. So if you save the timestamp of a particular content creation in database we can simply show this ‘ago time calculation’ using the following algorithm.

//$datefrom is the timestamp for the content , and you can leave the $dateto value to see the current delay

function TimeAgo($datefrom,$dateto=-1) { // Defaults and assume if 0 is passed in that // its an error rather than the epoch if($datefrom<=0) { return "A long time ago"; } if($dateto-1) { $dateto = time(); } // Calculate the difference in seconds betweeen // the two timestamps $difference = $dateto - $datefrom; // If difference is less than 60 seconds, // seconds is a good interval of choice if($difference < 60) { $interval = "s"; } // If difference is between 60 seconds and // 60 minutes, minutes is a good interval elseif($difference >= 60 && $difference<6060) { $interval = "n"; } // If difference is between 1 hour and 24 hours // hours is a good interval elseif($difference >= 6060 && $difference<606024) { $interval = "h"; } // If difference is between 1 day and 7 days // days is a good interval elseif($difference >= 606024 && $difference<6060247) { $interval = "d"; } // If difference is between 1 week and 30 days // weeks is a good interval elseif($difference >= 6060247 && $difference < 60602430) { $interval = "ww"; } // If difference is between 30 days and 365 days // months is a good interval, again, the same thing // applies, if the 29th February happens to exist // between your 2 dates, the function will return // the 'incorrect' value for a day elseif($difference >= 60602430 && $difference < 606024365) { $interval = "m"; } // If difference is greater than or equal to 365 // days, return year. This will be incorrect if // for example, you call the function on the 28th April // 2008 passing in 29th April 2007. It will return // 1 year ago when in actual fact (yawn!) not quite // a year has gone by elseif($difference >= 606024365) { $interval = "y"; } // Based on the interval, determine the // number of units between the two dates // From this point on, you would be hard // pushed telling the difference between // this function and DateDiff. If the $datediff // returned is 1, be sure to return the singular // of the unit, e.g. 'day' rather 'days' switch($interval) { case "m": $monthsdifference = floor($difference / 60 / 60 / 24 / 29); while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($monthsdifference), date("j", $dateto), date("Y", $datefrom)) < $dateto) { $monthsdifference++; } $datediff = $monthsdifference; // We need this in here because it is possible // to have an 'm' interval and a months // difference of 12 because we are using 29 days // in a month if($datediff12) { $datediff--; } $res = ($datediff1) ? "$datediff month ago" : "$datediff months ago"; break; case "y": $datediff = floor($difference / 60 / 60 / 24 / 365); $res = ($datediff1) ? "$datediff year ago" : "$datediff years ago"; break; case "d": $datediff = floor($difference / 60 / 60 / 24); $res = ($datediff1) ? "$datediff day ago" : "$datediff days ago"; break; case "ww": $datediff = floor($difference / 60 / 60 / 24 / 7); $res = ($datediff1) ? "$datediff week ago" : "$datediff weeks ago"; break; case "h": $datediff = floor($difference / 60 / 60); $res = ($datediff1) ? "$datediff hour ago" : "$datediff hours ago"; break; case "n": $datediff = floor($difference / 60); $res = ($datediff1) ? "$datediff minute ago" : "$datediff minutes ago"; break; case "s": $datediff = $difference; $res = ($datediff==1) ? "$datediff second ago" : "$datediff seconds ago"; break; } return $res; }