我有以下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;
}
?>
答案 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;
}
?>