Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert seconds(float) into mm:ss:ms in php

Tags:

php

time

I have the below php function which takes a time argument in seconds from a database. The seconds are of type float(6,1) in the database. I then pass that value to the function below. The problem i have is if i have 1655.5 seconds i can get the hour, minutes and seconds. But how do i get the milliseconds that remain.

ie 1655.5 = 27m:35s.5ms

Thanks for any help in advance.

<?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;
    }

?>
like image 717
Alan Mulligan Avatar asked May 08 '26 21:05

Alan Mulligan


1 Answers

Possibly slightly counter-intuitively, the easiest way would be to extract the milliseconds as the first step.

Simply floor() the initial value, and subtract the result from the input. This will give you just the right-hand side of the decimal point, you can then multiply this by 1000 to give you the number of milliseconds - which you should then cast to an integer to ensure the resulting string is sensible.

function convertTo($init)
{
      $secs = floor($init);
      $milli = (int) (($init - $secs) * 1000);

      $hours = ($secs / 3600);
      $minutes = (($secs / 60) % 60);
      $seconds = $secs % 60;
      // ...
like image 93
DaveRandom Avatar answered May 10 '26 09:05

DaveRandom



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!