Here's my time_format() function, based on someone else's work from years ago
function time_format($seconds, $mode = "long", $extra = ''){
$names = array('long' => array("year", "month", "day", "hour", "minute", "second"), 'short' => array("yr", "mnth", "day", "hr", "min", "sec"));
$seconds = floor($seconds);
$minutes = intval($seconds / 60);
$seconds -= ($minutes * 60);
$hours = intval($minutes / 60);
$minutes -= ($hours * 60);
$days = intval($hours / 24);
$hours -= ($days * 24);
$months = intval($days / 31);
$days -= ($months * 31);
$years = intval($months / 12);
$months -= ($years * 12);
$result = array();
if ($years)
$result[] = sprintf("%s%s %s%s", number_format($years), ' '.$extra, $names[$mode][0], $years == 1 ? "" : "s");
if ($months)
$result[] = sprintf("%s%s %s%s", number_format($months), ' '.$extra, $names[$mode][1], $months == 1 ? "" : "s");
if ($days)
$result[] = sprintf("%s%s %s%s", number_format($days), ' '.$extra, $names[$mode][2], $days == 1 ? "" : "s");
if ($hours)
$result[] = sprintf("%s%s %s%s", number_format($hours), ' '.$extra, $names[$mode][3], $hours == 1 ? "" : "s");
if ($minutes && count($result) < 2)
$result[] = sprintf("%s%s %s%s", number_format($minutes), ' '.$extra, $names[$mode][4], $minutes == 1 ? "" : "s");
if (($seconds && count($result) < 2) || !count($result))
$result[] = sprintf("%s%s %s%s", number_format($seconds), ' '.$extra, $names[$mode][5], $seconds == 1 ? "" : "s");
return implode(", ", $result);
}
echo time_format(193),'<br />';
echo time_format(193, 'short'),'<br />';
echo time_format(193, 'long', 'special'),'<br />';
Should return:
3 hours, 13 minutes
3 hrs, 13 mins
3 special hours, 13 minutes