如何删除前导';0';s来自HH:MM:SS


How to remove leading '0's from HH:MM:SS?

我有一个函数,可以将秒转换为Hours:Minutes:seconds 格式

  function sec2hms ($sec) 
  {
    $hms = "";
    $hours = intval(intval($sec) / 3600); 
    $minutes = intval(($sec / 60) % 60); 
    $seconds = intval($sec % 60); 
    $hms .= str_pad($hours, 2, "0", STR_PAD_LEFT). ":";        
    $hms .= str_pad($minutes, 2, "0", STR_PAD_LEFT). ":";    
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
    return $hms;    
  }

如何更改此函数,以便删除第一分钟位置以外的所有前导数字?

例如

sec2hms(9) //returns 0:09
sec2hms(123) //returns 2:03
sec2hms(5941)//returns 1:39:01

只需在分钟内不使用str_pad()函数即可。它添加了前导零。

  function sec2hms ($sec) 
  {
    $hms = "";
    $hours = intval(intval($sec) / 3600); 
    $minutes = intval(($sec / 60) % 60); 
    $seconds = intval($sec % 60); 
    if($hours)
        $hms .= $hours. ":";        
    $hms .= $minutes. ":";    
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
    return $hms;    
  }

您有自己的代码。

函数str_pad在左侧填充0。去掉那个函数。

$hms = $hours.':'.$minutes.':'.$seconds;

这是我刚刚编写的函数

function secondsToHHMMSS ($sec) 
{
    $hms = "";
    $hours = intval(intval($sec) / 3600); 
    $minutes = intval(($sec / 60) % 60); 
    $seconds = intval($sec % 60); 

    if($hours != 0){
    $hms .=  $hours . ":";
    $hms .=  str_pad($minutes, 2, "0", STR_PAD_LEFT) . ":";        
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
    }
    else{
    $hms .= $minutes . ":";
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
    }
    return $hms;    
}

试着返回这个,而不是:

return ltrim(substr($hms, 0, 4), ':0').substr($hms, 4);