wordtime PHP Function
The following function allows you to to input a time() variable, and it will return a string that represents something such as
6 days 21 hours ago
or
6 days 21 hours to go
based on the tense of the data inputted (negative / positive).
You can modify the $parts to change how many sections of the string is shown. for example, a $parts=3 would show
6 days 21 hours 48 minutes ago
…etc.
function wordtime($data) {
$parts=2;
$temp = date("c", $data);
$title = date("l, F d, Y ~ g:iA O", $data);
$date = strtotime($temp);
$diff = time() - $date;
$periods_ago = array('decade' => 315360000,
'year' => 31536000,
'month' => 2628000,
'week' => 604800,
'day' => 86400,
'hour' => 3600,
'minute' => 60,
'second' => 1);
$periods_togo = array('decade' => -315360000,
'year' => -31536000,
'month' => -2628000,
'week' => -604800,
'day' => -86400,
'hour' => -3600,
'minute' => -60,
'second' => -1);
if($diff >= 0){
foreach ($periods_ago as $key => $value) {
if ($diff >= $value) {
$time = floor($diff/$value);
$difference %= $value;
$return_value .= ($return_value ? ' ' : '').$time.' ';
$return_value .= (($time > 1) ? $key.'s' : $key);
$parts--;
}
if ($parts == '0') { break; }
}
switch($return_value){
case '':
return "now";
default:
return "" .$return_value.' ago';
}
}
else{
foreach ($periods_togo as $key => $value) {
if ($diff <= $value) {
$time = floor($diff/$value);
$diff %= $value;
$return_value .= ($return_value ? ' ' : '').$time.' ';
$return_value .= (($time > 1) ? $key.'s' : $key);
$parts--;
}
if ($parts == '0') { break; }
}
return "" .$return_value.' to go';
}
}