3

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

?>
4

2 回答 2

4

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

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

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

      $hours = ($secs / 3600);
      $minutes = (($secs / 60) % 60);
      $seconds = $secs % 60;
      // ...
于 2013-07-23T20:25:10.290 回答
1

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

?>
于 2016-08-24T16:20:26.397 回答