我尝试使用gmdate将秒转换为HH:MM:SS,并使用以下代码:
gmdate("H:i:s", $result["s"]
$result["s]
等于142:000
当我回显gmdate代码时,显示00:24:02
这是错误的,应该是00:02:36
答案 0 :(得分:12)
120来自哪里? 142(或142.000)秒等于2分36秒(142/60)
142 / 60 = 2.36666667 minutes
不等于2min 36sec
。 2.36666
是十进制数,表示分钟数。如果您希望将2.36666
格式化为分钟和秒,则将整数作为分钟,将0.366666 * 60
作为秒,即22
,结果为2min 22sec
。< / p>
您应该将第二个参数转换为整数,或者至少删除:000
部分:
$result['s'] = '142:000';
echo gmdate("H:i:s", (int)$result['s']); # 0:02:22
如果您的时间超过86400秒(1天),您将遇到问题。在这种情况下,您可以使用this。
答案 1 :(得分:3)
试试这个
echo gmdate("H:i:s", 685);
OR
days = seconds / ( 24 * 60 * 60 )
seconds -= ( days * ( 24 * 60 * 60 ) )
hours = seconds / ( 60 * 60 )
seconds -= ( hours * ( 60 * 60 ) )
minutes = seconds / 60
seconds -= ( minutes * 60 )
答案 2 :(得分:1)
Y0u可以试试这个
$getHours = floor($seconds / 3600);
$getMins = floor(($seconds - ($getHours*3600)) / 60);
$getSecs = floor($seconds % 60);
echo $getHours.':'.$getMins.':'.$getSecs;
答案 3 :(得分:0)
这对我有用。功能格式。没有前导零和无限小时,没有使用天数。
/* WHM MOD convert a string of seconds to H:M:S format */
function sec2hms($secs) {
$secs = round($secs);
$secs = abs($secs);
$hours = floor($secs / 3600) . ':';
if ($hours == '0:') $hours = '';
$minutes = substr('00' . floor(($secs / 60) % 60), -2) . ':';
$seconds = substr('00' . $secs % 60, -2);
return ltrim($hours . $minutes . $seconds, '0');
}