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