我有一个函数可以将秒转换为小时:分钟:秒的格式
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 :(得分: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);