我正在尝试解决一个问题,我需要能够在几秒钟内转换带小数位的时间,例如375.844
我需要将其转换为以下格式:
HH:MM:SS.0
而不是四舍五入到最接近的整秒
我相信上面的数字应显示为00:06:15.8
这是更广泛的计划的一部分,用户输入小时,分钟和秒,允许十分之一秒。
我使用以下函数将此全部转换为秒:
public function timetosecs() {
return $this->hours * (60 * 60) + $this->mins * 60 + $this->secs * 1;
}
然后对秒进行一些计算以调整它们,乘以因子0.866
然后这是将它们转换回时间格式的函数,但它似乎不显示十分之一。
public function secstotime($totalSeconds) {
$hours = floor($totalSeconds / 3600);
$totalSeconds %= 3600;
$minutes = floor($totalSeconds / 60);
$seconds = floor(($totalSeconds % 60) * 10) / 10;
return $hours . ":" . $minutes . ":" . $seconds;
}
答案 0 :(得分:0)
使用sprintf()
功能设置前导数字:
function secstotime($totalSeconds) {
$startTotalSeconds = $totalSeconds;
$hours = floor($totalSeconds / 3600);
$totalSeconds %= 3600;
$minutes = floor($totalSeconds / 60);
$seconds = $startTotalSeconds - ($minutes * 60);
return sprintf("%02d",$hours) . ":" . sprintf("%02d",$minutes) . ":" .sprintf("%.1f", $seconds);
}
//...
echo secstotime(375.844); // prints 00:06:15.8