-
-
Save zacscott/8348717 to your computer and use it in GitHub Desktop.
Fuzzy/approx of a date in the past (php function).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** Returns a fuzzy/approx of a date in the past. */ | |
function fuzzyDate($date){ | |
$time = strtotime($date); | |
$now = time(); | |
$ago = $now - $time; | |
if ($ago < 60) { | |
$when = round($ago); | |
$s = ($when == 1) ? "second" : "seconds"; | |
return "$when $s ago"; | |
} elseif ($ago < 3600) { | |
$when = round($ago / 60); | |
$m = ($when == 1) ? "minute" : "minutes"; | |
return "$when $m ago"; | |
} elseif ($ago >= 3600 && $ago < 86400) { | |
$when = round($ago / 60 / 60); | |
$h = ($when == 1) ? "hour" : "hours"; | |
return "$when $h ago"; | |
} elseif ($ago >= 86400 && $ago < 2629743.83) { | |
$when = round($ago / 60 / 60 / 24); | |
$d = ($when == 1) ? "day" : "days"; | |
return "$when $d ago"; | |
} elseif ($ago >= 2629743.83 && $ago < 31556926) { | |
$when = round($ago / 60 / 60 / 24 / 30.4375); | |
$m = ($when == 1) ? "month" : "months"; | |
return "$when $m ago"; | |
} else { | |
$when = round($ago / 60 / 60 / 24 / 365); | |
$y = ($when == 1) ? "year" : "years"; | |
return "$when $y ago"; | |
} | |
} | |
/** Returns a fuzzy/approx of a date in the past. */ | |
function lessFuzzyDate($date){ | |
$time = strtotime($date); | |
$now = time(); | |
$ago = $now - $time; | |
if ($ago < 60) { | |
return "Just now"; | |
} elseif ($ago < 3600) { | |
$when = round($ago / 60); | |
$m = ($when == 1) ? "minute" : "minutes"; | |
return "$when $m ago"; | |
} elseif ($ago >= 3600 && $ago < 86400) { | |
$when = round($ago / 60 / 60); | |
$h = ($when == 1) ? "hour" : "hours"; | |
return "$when $h ago"; | |
} elseif ($ago >= 86400 && $ago < 2629743.83) { | |
$when = round($ago / 60 / 60 / 24); | |
$d = ($when == 1) ? "day" : "days"; | |
return "$when $d ago"; | |
} elseif ($ago < 31556926) { | |
return date('jS F', $time); | |
} else { | |
return date('jS F Y', $time); | |
} | |
} | |
echo fuzzyDate("2012-09-12 12:23:45")."<br />"; | |
echo fuzzyDate("2012-09-13 05:25:45")."<br />"; | |
echo fuzzyDate("2012-01-01 01:00:00")."<br />"; | |
echo fuzzyDate("2001-05-30 00:00:00")."<br />"; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment