web-dev-qa-db-fra.com

La sortie est en secondes. convertir au format hh: mm: ss en php

  1. Ma sortie est au format de 290,52262423327 secondes. Comment puis-je changer cela en 00:04:51?

  2. La même sortie que je veux montrer en secondes et au format HH: MM: SS, donc si elle est en secondes, je veux montrer seulement 290,52 secondes (seulement deux entiers après le point décimal)? Comment puis-je faire ceci?

Je travaille en php et la sortie est présente dans la variable $time. voulez changer ce $time en $newtime avec HH: MM: SS et $newsec comme 290.52.

Merci :)

36
Scorpion King

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";

empreintes

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

2)

echo round($time, 2);
83
VolkerK

Essaye celui-là

echo gmdate("H:i:s", 90);
11
Azam Alvi
$iSeconds = 290.52262423327;
print date('H:i:s', mktime(0, 0, $iSeconds));
4
Teekin

Essaye ça:

$time = 290.52262423327;
echo date("h:i:s", mktime(0,0, round($time) % (24*3600)));
2
Martin Vseticka

Essaye ça :) 

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;
    }
1
Zagloo

Je ne sais pas si c'est le moyen le plus efficace, mais si vous devez également afficher les jours, cela fonctionne:

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);
}
1
Serge

1) 

$newtime = sprintf( "%02d:%02d:%02d", $time / 3600, $time / 60 % 60, $time % 60 );

2) 

$newsec = sprintf( "%.2f", $time );
0
Rob K

Personnellement, répondant aux autres peuples, j'ai créé mon propre analyseur. Fonctionne avec les jours, heures, minutes et secondes. Et devrait être facile à étendre à des semaines/mois, etc . Cela fonctionne aussi avec la désérialisation en c #

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
PassiveModding

Numero uno ... http://www.ckorp.net/sec2time.php (utilisez cette fonction)

Numero Duo ... echo round(290.52262423327,2);

0
Dejan Marjanovic