With the following function you can easily convert an integer containing seconds to a nice days, hours, minutes, seconds string or array.
function secondsToTime($seconds, $return_type="string") {
// extract days
$days = floor($seconds / 3600 / 24);
// extract hours
$hours = floor($seconds / 3600) - $days*24;
// extract minutes
$divisor_for_minutes = $seconds % 3600;
$minutes = floor($divisor_for_minutes / 60);
// extract the remaining seconds
$divisor_for_seconds = $divisor_for_minutes % 60;
$seconds = ceil($divisor_for_seconds);
// return the final array
$obj = array(
"d" => (int) $days,
"h" => (int) $hours,
"m" => (int) $minutes,
"s" => (int) $seconds
);
$str = "";
if ($obj["d"]!=0) $str .= $obj["d"]."d ";
$str .= $obj["h"]."h ";
$str .= $obj["m"]."m ";
if ($return_type=="string") return $obj["d"]." days, ".$obj["m"]." minutes, ".$obj["h"]." hours, ".$obj["s"]." seconds";
else return $obj;
}
To use the above function you can either use the default return type and call it like so:
echo secondsToTime(478641);
..which gives the following result:
5 days, 57 minutes, 12 hours, 21 seconds
..or you can specify to return the data as an array for later manipulation:
print_r(secondsToTime(478641, "array"));
..which gives the following result:
Array ( [d] => 5 [h] => 12 [m] => 57 [s] => 21 )