Additionner des heures

Utilisateur anonyme - 5 août 2004 à 16:45
 Utilisateur anonyme - 5 août 2004 à 20:00
J'ai plusieurs heures: 20:10:00 (donc 20h10), 00:10:00 (donc 10 minutes) et 01:37:00 (donc 1h37). Je voudrais additionner ces heures et donc avoir 21:57:00.

J'ai essayé plusieurs méthode pour additionner des heure mais en vain (mktime, etc...).

Merci d'avance.

Quand un homme a prouvé qu'il a du talent, il lui reste à prouver qu'il sait s'en servir

3 réponses

ronanf235 Messages postés 105 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 juin 2006
5 août 2004 à 17:32
slt

pourquoi tu le fai pas a la main avec une petite fonction maison (c'est souvent la solution)

tu peut utiliser explode pour separer les champs heures:minutes:seconde

ex :
$heure = "20:10:34";
list ($h,$m,$s) = explode (":",$heure);

ca te rendra
$h = "20"
$m = "10"
$s = "34"



bonne continuation
ronan
0
cs_roscovich Messages postés 23 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 25 août 2004
5 août 2004 à 17:52
En effet on peut le faire avec explode
function additioneheure($heure1,$heure2)
{
//initialisation
$s=0;
$m=0;
$h=0;
//recuperation des données
list ($h1,$m1,$s1) = explode (":",$heure1);
list ($h2,$m2,$s2) = explode (":",$heure2);
//calcul des secondes
$s=$s1+$s2;
if($s>59){$s=$s-60;$m=1;}
//calcul des minutes
$m=$m+$m1+$m2;
if($m>59){$m=$m-60;$h=1;}
//calcul des heures
$h=$h+$h1+$h2;
if($h>23){$h=$h-24;}
//on remet au bon format
if(strlen($h)==1){$h="0".$h;}
if(strlen($m)==1){$m="0".$m;}
if(strlen($s)==1){$s="0".$s;}

return($h.":".$m.":".$s);

}

0
Utilisateur anonyme
5 août 2004 à 20:00
C'est ce que je me suis résolu à faire. Mais ça me surprend compte tenu de la facilité de cette opération en VB.

Pour info et pour tout ceux qui se posent la question, voilà ma fonction:

function CalculDuree($heure1, $heure2) {
$heure1 = explode(":", $heure1);
$heure2 = explode(":", $heure2);

/* Temps en seconde */
$temps = (($heure1[0]+$heure2[0]) * 3600) + (($heure1[1]+$heure2[1]) * 60) + ($heure1[2]+$heure2[2]);

/* La partie entière de la division correspond aux minutes et le reste aux secondes */$heure_tmp floor($temps / 3600);	/* La partie entière de la division heures */$minute_tmp floor(($temps % 3600) / 60);	/* La partie entière de la division minutes */$seconde_tmp ($temps - ($heure_tmp * 3600)) % 60;	/* Le reste secondes */
if ($heure_tmp >24) { $heure_tmp $heure_tmp - 24; }

return $heure_tmp.":".$minute_tmp.":".$seconde_tmp;
}
0
Rejoignez-nous