mardi 11 septembre 2007

Convertir un nombre de secondes en jours, heures, minutes et secondes

Comme le titre le montre, dans ce tuto on va essayer de convertir un nombre de secondes en jours, heures, minutes et secondes.
Par exemple : On a une variable qui définit une durée de 38600 secondes, mais comme vous remarquez, cette durée aurait été plus claire et plus facile à retenir si elle était présentée en valeurs jours, heures, minutes et secondes , c'est à dire sous forme d'une date.
L'idée de ce tuto est d'apprendre à créer une fonction qui permettra de convertir le nombre de secondes en forme d'une date.

Alors au travail! :)

function transforme($time)
{
if ($time>=86400)
/* 86400 = 3600*24 c'est à dire le nombre de secondes dans un seul jour ! donc là on vérifie si le nombre de secondes donné contient des jours ou pas */
{
// Si c'est le cas on commence nos calculs en incluant les jours

// on divise le nombre de seconde par 86400 (=3600*24)
// puis on utilise la fonction floor() pour arrondir au plus petit
$jour = floor($time/86400);
// On extrait le nombre de jours
$reste = $time%86400;

$heure = floor($reste/3600);
// puis le nombre d'heures
$reste = $reste%3600;

$minute = floor($reste/60);
// puis les minutes


$seconde = $reste%60;
// et le reste en secondes

// on rassemble les résultats en forme de date
$result = $jour.'j '.$heure.'h '.$minute.'min '.$seconde.'s';
}
elseif ($time < 86400 AND $time>=3600)
// si le nombre de secondes ne contient pas de jours mais contient des heures
{
// on refait la même opération sans calculer les jours
$heure = floor($time/3600);
$reste = $time%3600;

$minute = floor($reste/60);

$seconde = $reste%60;

$result = $heure.'h '.$minute.'min '.$seconde.' s';
}
elseif ($time<3600 AND $time>=60)
{
// si le nombre de secondes ne contient pas d'heures mais contient des minutes
$minute = floor($time/60);
$seconde = $time%60;
$result = $minute.'min '.$seconde.'s';
}
elseif ($time < 60)
// si le nombre de secondes ne contient aucune minutes
{
$result = $time.'s';
}
return $result;
}




wala c tout :)
@+

PHPaul

1 commentaire:

Anonyme a dit…

Yoo! Simpas ta fonction. Juste que pour une question de clarté, si l'opération se répète, tu peux utiliser des tableau et des boucles. J'ai refait ta fonction dans le cadre de mon travail personnel de diplôme. Le code fait exactement (plus ou moins) les mêmes calculs que ta fonction mais elle est nettement plus courte. A bientôt et merci pour ta fonction sans quoi je n'aurai pas pu l'améliorer. A+ ;-) Edi

Voici la fonction:


function ConvertSecondesEnHeures($time) {
$tabTemps = array("jours" => 86400,
"heures" => 3600,
"minutes" => 60,
"secondes" => 1);

$result = "";

foreach($tabTemps as $uniteTemps => $nombreSecondesDansUnite) {
$$uniteTemps = floor($time/$nombreSecondesDansUnite);

$time = $time%$nombreSecondesDansUnite;

if($$uniteTemps > 0 || !empty($result))
$result .= $$uniteTemps." $uniteTemps ";
}
return $result;
}

CodeS-SourceS :: Derniers codes PHP ajoutés