Skip to content

Instantly share code, notes, and snippets.

@szepeshazi
Created May 15, 2013 08:46
Show Gist options
  • Save szepeshazi/5582520 to your computer and use it in GitHub Desktop.
Save szepeshazi/5582520 to your computer and use it in GitHub Desktop.
Friendly time / php
function get_friendly_time($time, $current_time = null) {
if (!$current_time) {
$current_time = time();
}
$diff = abs((int)$current_time - (int)$time);
$minute = 60;
$hour = $minute * 60;
$day = $hour * 24;
if ($diff < $minute) {
return elgg_echo("friendlytime:justnow");
}
if ($diff < $hour) {
$granularity = ':minutes';
$diff = round($diff / $minute);
} else if ($diff < $day) {
$granularity = ':hours';
$diff = round($diff / $hour);
} else {
$granularity = ':days';
$diff = round($diff / $day);
}
if ($diff == 0) {
$diff = 1;
}
$future = ((int)$current_time - (int)$time < 0) ? ':future' : '';
$singular = ($diff == 1) ? ':singular' : '';
return elgg_echo("friendlytime{$future}{$granularity}{$singular}", array($diff));
}
$time_str = array(
'friendlytime:justnow' => "just now",
'friendlytime:minutes' => "%s minutes ago",
'friendlytime:minutes:singular' => "a minute ago",
'friendlytime:hours' => "%s hours ago",
'friendlytime:hours:singular' => "an hour ago",
'friendlytime:days' => "%s days ago",
'friendlytime:days:singular' => "yesterday",
'friendlytime:date_format' => 'j F Y @ g:ia',
'friendlytime:future:minutes' => "in %s minutes",
'friendlytime:future:minutes:singular' => "in a minute",
'friendlytime:future:hours' => "in %s hours",
'friendlytime:future:hours:singular' => "in an hour",
'friendlytime:future:days' => "in %s days",
'friendlytime:future:days:singular' => "tomorrow",
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment