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; }