<?php function prettyDate($ts) { $s = date("m.d.Y", $ts); $now = time(); if ($now > $ts) { $diff = round($now-$ts); $numMins = round($diff/60); $numHours = round($numMins/60); $numDays = round($numHours/24); $numWeeks = round($numDays/7); $numMonths = round($numWeeks/4.33); $numYears = round($numMonths/12); if (($diff < 60) || ($numMins <= 1)) { $s ="1 minute ago"; } elseif ($numHours == 0) { $s = $numMins ." minutes ago"; } elseif ($numDays == 0) { if ($numHours > 1) { $s = $numHours ." hours ago"; } else { $s ="1 hour ago"; } } elseif ($numWeeks == 0) { if ($numDays > 1) { $s = $numDays ." days ago"; } else { $s ="Yesterday"; } } elseif ($numMonths == 0) { if ($numWeeks > 1) { $s = $numWeeks ." weeks ago"; } else { $s ="Last week"; } } else { if ($numMonths > 1) { $s = $numMonths ." months ago"; } elseif ($numMonths <= 3) { $s = $numMonths .=" months ago"; } else { $s ="Over 3 months ago"; } } } else { $diff = ($ts - $now); $numMins = ($diff/60); $numHours = round($numMins/60); $numDays = round($numHours/24); $numWeeks = round($numDays/7); $numMonths = round($numWeeks/4.33); $numYears = round($numMonths/12); if ($numDays == 0) { $s ="Today"; } elseif ($numDays == 1) { $s ="Tomorrow"; } elseif ($numWeeks == 0) { $s = $numDays ." days"; } elseif ($numWeeks == 1) { $s ="Next Week"; } elseif ($numMonths == 0) { $s = $numWeeks ." weeks"; } elseif ($numMonths == 1) { $s ="Next Month"; } elseif ($numYears <= 0) { $s = $numMonths ." months"; } elseif ($numYears == 1) { $s ="Next Year"; } else { $s ="Over a year"; } } return $s; } ?>
Usage
just pass a standard unix timestamp to the function and echo the return value to show textual dates (eg: Yesterday, 3 hours ago, Last week, Tomorrow)
0 comments:
Post a Comment