Search code examples
phpdatetime-format

How do I format an amount of milliseconds into minutes:seconds:milliseconds in PHP?


I have a total ammount of milliseconds (ie 70370) and I want to display it as minutes:seconds:milliseconds ie 00:00:0000.

How can I do this in PHP?


Solution

  • Don't fall into the trap of using date functions for this! What you have here is a time interval, not a date. The naive approach is to do something like this:

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

    but because the date function is used for (gasp!) dates, it doesn't handle time the way you would want it to in this situation - it takes timezones and daylight savings, etc, into account when formatting a date/time.

    Instead, you will probably just want to do some simple maths:

    $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.