A function to get a 'fuzzy' textual date
<? 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; } ?>
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)
Comments
Add your comment