在PHP中将秒转换为HH:MM:SS

时间:2013-12-19 09:15:29

标签: php

我尝试使用gmdate将秒转换为HH:MM:SS,并使用以下代码:

gmdate("H:i:s", $result["s"]

$result["s]等于142:000

当我回显gmdate代码时,显示00:24:02这是错误的,应该是00:02:36

4 个答案:

答案 0 :(得分:12)

  

120来自哪里? 142(或142.000)秒等于2分36秒(142/60)

142 / 60 = 2.36666667 minutes不等于2min 36sec2.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

demo

如果您的时间超过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');
}