Page 1 sur 1

gestion heure php

Posté : 03 déc. 2013, 22:12
par simon
Bonjour,

Je me tourne vers vous car je suis perdu et je ne comprends pas quelques chose. J'essaie d'ajouter 2 date entre elle. Or l'addition ne fonctionne pas mais la soustraction elle fonctionne et je ne vois pas la différence.
Le code :
			$h1=strtotime("07:30");
			$h2=strtotime("03:00");
			echo gmdate('H:i',$h1-$h2);
J'obtiens bien le résultat voulu ici : 04:30 mais si je remplace le - par le + alors la le résultat est erroné
			$h1=strtotime("07:30");
			$h2=strtotime("03:00");
			echo gmdate('H:i',$h1+$h2);
J'obtiens alors 02:01 et je ne comprend vraiment pas pourquoi quelle est la différence?

Merci d'avance

Re: gestion heure php

Posté : 04 déc. 2013, 00:07
par nico63800
bonjour

c'est logique !!

La fonction strtotime() essaye de lire une date au format anglais fournie par le paramètre time, et de la transformer en timestamp Unix (le nombre de secondes depuis le 1er Janvier 1970 à 00:00:00 UTC), relativement au timestamp now, ou à la date courante si ce dernier est omis.

http://php.net/manual/fr/function.strtotime.php

donc ,
$h1=strtotime("07:30"); // $h1 = int(1386073800)
$h2=strtotime("03:00"); // $h2 = int(1386057600)

dans ce cas si tu fais $h1-$h2 tu obtiens en secondes la différence entre les deux timestamp soit 4h30 une fois convertie en heures et minutes

mais si tu additionnes, la somme des 2 timestamp ne correspond à rien ...

de plus, "additionner" deux heures, je ne vois pas trop à quoi çà peut correspondre.
Quand tu dis que le résultat est erroné dans le cas de la somme, à quel résultat t'attends tu ?
Que peut bien valoir 7h30 + 3h00 ?
on peut additionner des durées, ca ok, mais des heures ... ?

en espérant t'avoir aidé
salutations.

Re: gestion heure php

Posté : 04 déc. 2013, 00:21
par simon
Oui ta réponse m'a éclairé, pour moi 7h30 + 3h00 = 10h30, mais je me suis peut être mal exprimé en parlant d'heures j’aurais peut-être du employé le terme de durée.

Re: gestion heure php

Posté : 04 déc. 2013, 00:33
par orenx22
Pour moi et pour n'importe quel début je trouve que l'exploitation de l'objet 'datetime' et juste parfait.
<?php

$datetime1 = new DateTime( '2009-10-11 12:39:09' );
$datetime2 = new DateTime( '2009-10-13 13:41:05' );

$interval = $datetime1-> diff( $datetime2 );

echo $interval-> format( '%Y-%m-%d %H-%i-%s' );

$diff = array();
$diff['annee']  = $interval-> format( '%Y' );
$diff['mois']   = $interval-> format( '%m' );
$diff['jour']   = $interval-> format( '%d' );
$diff['heure']  = $interval-> format( '%H' );
$diff['min']    = $interval-> format( '%i' );
$diff['sec']    = $interval-> format( '%s' );

print_r( $diff );
http://php.net/manual/fr/class.datetime.php
en lien avec le tableau des dates :
http://php.net/manual/fr/function.date.php

La gestion d’intervalle et assez sympa aussi !

Re: gestion heure php

Posté : 04 déc. 2013, 11:24
par sirakawa
Bien sûr qu'on a des occasions d'opérer sur des heures:
Si le tour part à 8h 47 et qu'on estime la durée de l'étape à 5h 45, à partir de quelle heure faut-il barrer les routes?
plussoyant mon prédécesseur:
http://us2.php.net/manual/fr/datetime.add.php