如何将小数转换为时间,例如。HH:MM:SS

php
2022-08-31 00:18:56

我正在尝试采用小数并对其进行转换,以便我可以将其回显为小时,分钟和秒。

我有小时和分钟,但正在打破我的大脑,试图找到秒。在谷歌上搜索了一段时间,没有运气。我相信这很简单,但我尝试过的都没有奏效。任何建议都是值得赞赏的!

这是我所拥有的:

function convertTime($dec)
{
    $hour = floor($dec);
    $min = round(60*($dec - $hour));
}

就像我说的,我得到小时和分钟没有问题。只是出于某种原因努力获得几秒钟。

谢谢!


答案 1

如果以小时为单位(因为提问者特别提到了一个decimal):$dec$dec

function convertTime($dec)
{
    // start by converting to seconds
    $seconds = ($dec * 3600);
    // we're given hours, so let's get those the easy way
    $hours = floor($dec);
    // since we've "calculated" hours, let's remove them from the seconds variable
    $seconds -= $hours * 3600;
    // calculate minutes left
    $minutes = floor($seconds / 60);
    // remove those from seconds as well
    $seconds -= $minutes * 60;
    // return the time formatted HH:MM:SS
    return lz($hours).":".lz($minutes).":".lz($seconds);
}

// lz = leading zero
function lz($num)
{
    return (strlen($num) < 2) ? "0{$num}" : $num;
}

答案 2

非常简单的解决方案在一行中:

echo gmdate('H:i:s', floor(5.67891234 * 3600));

推荐