如何在PHP中将毫秒数格式化为分钟:秒:毫秒?

2022-08-30 21:41:16

我有一个总毫秒(即70370),我想将其显示为分钟:秒:毫秒,即00:00:0000。

如何在 PHP 中执行此操作?


答案 1

不要陷入使用日期函数的陷阱!你在这里拥有的是一个时间间隔,而不是一个日期。幼稚的方法是做这样的事情:

date("H:i:s.u", $milliseconds / 1000)

但是由于日期函数用于(喘口气!)日期,因此在这种情况下,它不会以您希望的方式处理时间 - 在格式化日期/时间时,它会考虑时区和夏令时等。

相反,您可能只想做一些简单的数学运算:

$input = 70135;

$uSec = $input % 1000;
$input = floor($input / 1000);

$seconds = $input % 60;
$input = floor($input / 60);

$minutes = $input % 60;
$input = floor($input / 60); 

// and so on, for as long as you require.

答案 2

如果您使用的是 PHP 5.3,则可以使用 DateInterval 对象:

list($seconds, $millis) = explode('.', $milliseconds / 1000);
$range = new DateInterval("PT{$seconds}S");
echo $range->format('%H:%I:%S') . ':' . str_pad($millis, 3, '0', STR_PAD_LEFT);

推荐