2012-02-22 121 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);