Skip to content

Instantly share code, notes, and snippets.

@wilhelm-murdoch
Created February 2, 2010 12:09
Show Gist options
  • Save wilhelm-murdoch/292609 to your computer and use it in GitHub Desktop.
Save wilhelm-murdoch/292609 to your computer and use it in GitHub Desktop.
Used to print out the given timestamp in relative format.
function relative($timestamp, $format = 'M jS \of Y')
{
$difference = time() - $timestamp;
if($months = floor($difference / 2592000))
{
return date($format, $timestamp);
}
$difference -= $months * 2419200;
$weeks = floor($difference / 604800);
$difference -= $weeks * 604800;
$days = floor($difference / 86400);
$difference -= $days * 86400;
$hours = floor($difference / 3600);
$difference -= $hours * 3600;
$minutes = floor($difference / 60);
$difference -= $minutes * 60;
$seconds = $difference;
$relative_date = '';
if($weeks)
{
$relative_date .= pluralize($weeks, 'week', 'weeks');
$relative_date .= $days ? ($relative_date ? ', ' : '') . pluralize($days, 'day', 'days') : '';
}
else if($days)
{
$relative_date .= pluralize($days, 'day', 'days');
$relative_date .= $hours ? ($relative_date ? ', ' : '') . pluralize($hours, 'hour', 'hours') : '';
}
else if($hours)
{
$relative_date .= pluralize($hours, 'hour', 'hours');
$relative_date .= $minutes ? ($relative_date ? ', ' : '') . pluralize($minutes, 'minute', 'minutes') : '';
}
else if($minutes)
{
$relative_date = pluralize($minutes, 'minute', 'minutes');
}
else
{
$relative_date = pluralize($seconds, 'second', 'seconds');
}
if($relative_date == '0 second')
{
return 'just a second ago';
}
return $relative_date . ' ago';
}
function pluralize($value, $singular, $plural)
{
return $value . ' ' . ((int) $value > 1 ? $plural : $singular);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment