Output is in seconds. convert to hh:mm:ss format in php

后端 未结 13 1637
礼貌的吻别
礼貌的吻别 2020-12-01 13:54
  1. My output is in the format of 290.52262423327 seconds. How can i change this to 00:04:51?

  2. The same output i want to show in seconds and in HH:MM:SS

相关标签:
13条回答
  • 2020-12-01 14:00

    Try this :)

    private function conversionTempsEnHms($tempsEnSecondes)
        {
            $h = floor($tempsEnSecondes / 3600);
            $reste_secondes = $tempsEnSecondes - $h * 3600;
    
            $m = floor($reste_secondes / 60);
            $reste_secondes = $reste_secondes - $m * 60;
    
            $s = round($reste_secondes, 3); 
            $s = number_format($s, 3, '.', '');
    
            $h = str_pad($h, 2, '0', STR_PAD_LEFT);
            $m = str_pad($m, 2, '0', STR_PAD_LEFT);
            $s = str_pad($s, 6, '0', STR_PAD_LEFT);
    
            $temps = $h . ":" . $m . ":" . $s;
    
            return $temps;
        }
    
    0 讨论(0)
  • 2020-12-01 14:04

    I dont know if this is the most efficient way, but if you also need to display days, this works:

    function foo($seconds) { 
    $t = round($seconds); 
    return sprintf('%02d  %02d:%02d:%02d', ($t/86400%24), ($t/3600) -(($t/86400%24)*24),($t/60%60), $t%60);
    }
    
    0 讨论(0)
  • 2020-12-01 14:09

    1)

    function foo($seconds) {
      $t = round($seconds);
      return sprintf('%02d:%02d:%02d', ($t/3600),($t/60%60), $t%60);
    }
    
    echo foo('290.52262423327'), "\n";
    echo foo('9290.52262423327'), "\n";
    echo foo(86400+120+6), "\n";
    

    prints

    00:04:51
    02:34:51
    24:02:06
    

    2)

    echo round($time, 2);
    
    0 讨论(0)
  • 2020-12-01 14:09

    Try this:

    $time = 290.52262423327;
    echo date("h:i:s", mktime(0,0, round($time) % (24*3600)));
    
    0 讨论(0)
  • 2020-12-01 14:09
    echo date('H:i:s',$time);
    
    echo number_format($time,2);
    
    0 讨论(0)
  • 2020-12-01 14:10

    Personally, going off other peoples answers I made my own parser. Works with days, hours, minutes and seconds. And should be easy to expand to weeks/months etc. It works with deserialisation to c# as well

    function secondsToTimeInterval($seconds) {
        $t = round($seconds);
        $days = floor($t/86400);
        $day_sec = $days*86400;
        $hours = floor( ($t-$day_sec) / (60 * 60) );
        $hour_sec = $hours*3600;
        $minutes = floor((($t-$day_sec)-$hour_sec)/60);
        $min_sec = $minutes*60;
        $sec = (($t-$day_sec)-$hour_sec)-$min_sec;
        return sprintf('%02d:%02d:%02d:%02d', $days, $hours, $minutes, $sec);
    }
    
    0 讨论(0)
提交回复
热议问题