在PHP中将秒(浮点)转换为mm:ss:ms

时间:2013-07-23 20:18:22

标签: php time

我有以下php函数,它在数秒内从数据库中获取时间参数。秒在数据库中是float(6,1)类型。然后我将该值传递给下面的函数。我遇到的问题是,如果我有1655.5秒,我可以得到小时,分钟和秒。但是我如何得到剩余的毫秒数。

即1655.5 = 27m:35s.5ms

感谢您提前提供任何帮助。

<?php
    function convertTo($init)
    {
          $hours = ($init / 3600);
          $minutes = (($init / 60) % 60);
          $seconds = $init % 60;

            if($minutes < 10)
            {
                $minutes = "0".$minutes;
            }

            if($seconds < 10)
            {
                $seconds = "0".$seconds;
            }

          $milli = /* code to ret the remaining milliseconds */   
          $stageTime = "$minutes:$seconds.$milli";
          return $stageTime;
    }

?>

2 个答案:

答案 0 :(得分:3)

可能有点反直觉,最简单的方法是提取毫秒作为第一步。

只需floor()初始值,然后从输入中减去结果。这将为您提供小数点的右侧,然后您可以将此乘以1000以得到毫秒数 - 然后您应该将其转换为整数以确保生成的字符串是合理的。

function convertTo($init)
{
      $secs = floor($init);
      $milli = (int) (($init - $secs) * 1000);

      $hours = ($secs / 3600);
      $minutes = (($secs / 60) % 60);
      $seconds = $secs % 60;
      // ...

答案 1 :(得分:1)

我已使用Leading Zero更新了此功能。现在时间将显示为00:00:00。我在我的谷歌分析项目中使用这个,它运作得很好。我希望这可以帮助别人。

<?php
function convertTo($init)
{
    $init  = number_format($init, 2);
    $secs  = floor($init);
    $milli = (int) (($init - $secs) * 1000);
    $milli = str_pad($milli, 2, '0', STR_PAD_LEFT);
    ;
    $hours   = ($secs / 3600);
    $minutes = (($secs / 60) % 60);
    $minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
    $seconds = $secs % 60;
    $seconds = str_pad($seconds, 2, '0', STR_PAD_LEFT);
    if ($hours > 1) {
        $hours = str_pad($hours, 2, '0', STR_PAD_LEFT);
    } else {
        $hours = '00';
    }
    $Time = "$hours:$minutes:$seconds";
    return $Time;
}

?>