Php将秒转换为仅具有所需值的可读格式

Php将秒转换为仅具有所需值的可读格式,php,Php,我在下面有这个函数 function secondsToTime($seconds) { $dtF = new DateTime("@0"); $dtT = new DateTime("@$seconds"); return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds'); } 例如,上面的函数172秒返回到下面 0 days, 0 hours, 2 minut

我在下面有这个函数

function secondsToTime($seconds) {
    $dtF = new DateTime("@0");
    $dtT = new DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
}
例如,上面的函数172秒返回到下面

0 days, 0 hours, 2 minutes and 52 seconds
但我希望它是唯一的

2 minutes and 52 seconds
或者如果少于60秒,则应忽略分钟

$seconds=172;
function sec_to_time($seconds) {
$hours = floor($seconds / 3600);
$minutes = floor($seconds % 3600 / 60);
$seconds = $seconds % 60;
if($hours>0)
{
   return sprintf(" %d hours %02d , minutes %02d , seconds", $hours, $minutes, $seconds);
}
else if($minutes>0)
{
  return sprintf("%02d minutes , %02d seconds", $minutes, $seconds);
}
else
{
  return sprintf("%02d seconds",  $seconds);
}
}
echo sec_to_time($seconds);
或根据您的更新功能更新新答案

function secondsToTime($seconds) {
    $dtF = new DateTime("@0");
    $dtT = new DateTime("@$seconds");
    $a=$dtF->diff($dtT)->format('%a');
    $h=$dtF->diff($dtT)->format('%h');
    $i=$dtF->diff($dtT)->format('%i');
    $s=$dtF->diff($dtT)->format('%s');
    if($a>0)
    {
       return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
    }
    else if($h>0)
    {
        return $dtF->diff($dtT)->format('%h hours, %i minutes and %s seconds');
    }
    else if($i>0)
    {
        return $dtF->diff($dtT)->format(' %i minutes and %s seconds');
    }
    else
    {
        return $dtF->diff($dtT)->format('%s seconds');
    }
}
echo secondsToTime(172);

如果函数中没有天数,那么返回值如何包含天数?很抱歉,看到我更新的函数这只是返回2:52?我需要2分钟,52分钟seconds@Devaki阿鲁马米thanx@DevakiArulmami现在检查答案。根据您的新功能进行更新