如何从HH:MM:SS中删除前导'0'?

时间:2012-02-22 21:44:19

标签: php

我有一个函数可以将秒转换为小时:分钟:秒的格式

  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

5 个答案:

答案 0 :(得分:4)

在分钟内不要使用str_pad()功能。它正在添加前导零。

答案 1 :(得分:3)

  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;    
  }

答案 2 :(得分:2)

您拥有自己的代码。

函数str_pad在左侧填充0。 只需取出该功能。

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

答案 3 :(得分:2)

这是我刚写的函数

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;    
}

答案 4 :(得分:0)

尝试返回此内容,而不是:

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