我有一段时间与以十分之一秒存储的运动有关。我需要像h:mm:ss.f
那样格式化它们,其中每个部分只有在必要时才可见。一些例子:
Tenths Formatted
1 0.1
12 1.2
123 12.3
1 234 2:03.4
12 345 20:34.5
123 456 3:25:45.6
1 234 567 34:17:36.7
12 345 678 342:56:07.8
123 456 789 3429:21:18.9
你会如何用PHP做到这一点?
这是我目前的解决方案,但想知道是否还有其他更干净,更有效或更有效的方法呢?
function sports_format($tenths)
{
$hours = floor($tenths / 36000);
$tenths -= $hours*36000;
$minutes = floor($tenths / 600);
$tenths -= $minutes*600;
$seconds = floor($tenths / 10);
$tenths -= $seconds*10;
$text = sprintf('%u:%02u:%02u.%u',
$hours, $minutes, $seconds, $tenths);
return preg_replace('/^(0|:){1,6}/', '', $text);
}
答案 0 :(得分:0)
$tenths = (array)$tenths;
$div = array(36000, 600, 10);
while($d = array_shift($div))
$tenths[0] -= ($tenths[] = floor($tenths[0] / $d)) * $d;
$text = vsprintf('%2$u:%3$02u:%4$02u.%u', $tenths);
return ltrim($text, '0:');
我不会认为这更干净。除了在ltrim()
时使用正则表达式,您的代码就可以了。