2012-02-22 60 views
0

我有转换数秒到数小时的格式的功能:分:秒如何从HH:MM:SS中删除前导'0?

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 
+0

功能,您应该简单地用一个if语句... – soju 2012-02-22 21:46:28

+1

你知道你其实放置“无用0“通过使用str_pad()funcion? – 2012-02-22 21:48:40

+3

我听说过只写代码,但你甚至*尝试*? – 2012-02-22 21:50:15

回答

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

@LedZeppelin尝试调用'sec2hms(3720)':你不是在你的评论中说这是不可取的吗? – cmbuckley 2012-02-22 22:29:03

2

你必须在自己的代码。

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

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

只需在分钟内不要使用str_pad()函数。它增加了领先的零。

0

,请返回这个,而是:

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