在php中将秒(float)转换为mm:ss:ms


Convert seconds(float) into mm:ss:ms in php

我有下面的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;
    }
?>

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

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

function convertTo($init)
{
      $secs = floor($init);
      $milli = (int) (($init - $secs) * 1000);
      $hours = ($secs / 3600);
      $minutes = (($secs / 60) % 60);
      $seconds = $secs % 60;
      // ...

我已经用前导零更新了这个函数。现在时间将显示为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;
}
?>