Takes a number of seconds i.e. “120000002” and converts into “3y 42w 2d 21h 20m 2s”.
function timify(int $seconds):string
{
$units['s'] = 1;
$units['m'] = 60;
$units['h'] = 60 * $units['m'];
$units['d'] = 24 * $units['h'];
$units['w'] = 7 * $units['d'];
$units['y'] = 52 * $units['w'];
$result = [];
foreach (array_reverse($units) as $unit=>$value)
if (($s = floor($seconds / $units[$unit])) != 0)
{
$result[] = $s.$unit;
$seconds = $seconds - $s * $value;
}
return implode(" ",$result);
}