我需要将秒转换为“小时:分钟:秒”。
例如:“685”转换为“00:11:25”
我怎样才能做到这一点呢?
我需要将秒转换为“小时:分钟:秒”。
例如:“685”转换为“00:11:25”
我怎样才能做到这一点呢?
当前回答
其他解决方案使用gmdate,但在超过86400秒的边缘情况下会失败。为了解决这个问题,我们可以自己简单地计算小时数,然后让gmdate将剩余的秒计算为分/秒。
echo floor($seconds / 3600) . gmdate(":i:s", $seconds % 3600);
输入:6030 输出:1:40:30
输入:2000006030 输出:555557:13:50
其他回答
一小时是3600秒,一分钟是60秒,为什么不呢?
<?php
$init = 685;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;
echo "$hours:$minutes:$seconds";
?>
生产:
$ php file.php
0:11:25
(我没有测试这么多,所以地板可能会有错误)
你可以使用gmdate()函数:
echo gmdate("H:i:s", 685);
我需要一种能将秒缩短为小时、分钟和秒,但能超过24小时,而不是进一步缩短为天的东西。
这是一个简单的函数。你也许可以改进它……但它在这里:
function formatSeconds($seconds)
{
$hours = 0;$minutes = 0;
while($seconds >= 60){$seconds -= 60;$minutes++;}
while($minutes >= 60){$minutes -=60;$hours++;}
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $hours.":".$minutes.":".$seconds;
}
其他解决方案使用gmdate,但在超过86400秒的边缘情况下会失败。为了解决这个问题,我们可以自己简单地计算小时数,然后让gmdate将剩余的秒计算为分/秒。
echo floor($seconds / 3600) . gmdate(":i:s", $seconds % 3600);
输入:6030 输出:1:40:30
输入:2000006030 输出:555557:13:50
下面的代码可以准确地显示总小时加上分和秒
$duration_in_seconds = 86401;
if($duration_in_seconds>0)
{
echo floor($duration_in_seconds/3600).gmdate(":i:s", $duration_in_seconds%3600);
}
else
{
echo "00:00:00";
}