Calcul de la durée entre 2 heures
YarbY
-
kilian Messages postés 8854 Statut Modérateur -
kilian Messages postés 8854 Statut Modérateur -
Bonjour,
Est ce normal que date("H:i",0) donne 1:00 ??
Je cherche à faire une soustraction entre 2 heures, pour calculer une durée et j'ai un ecart de 1h. Et en effectuant des tests pour voir ou était l'erreur j'en suis arrivé à faire une difference entre 2 même heure et ça m'a renvoyé 1:00.
Donc la simplicité voudrait que je soustrait 1h mais je voudrait comprendre pourquoi date("H:i",0) donne 1:00 !!
merci d'avance
voici mon code:
$h1 = 10;
$m1 = 00;
$h2 = 12;
$m2 = 00;
$heure2 = mktime($h2,$m2);
$heure1 = mktime($h1,$m1);
$diff = $heure2 - $heure1;
$diff = date("H:i",$diff);
$t_diff = explode(":",$diff);
$duree = ($t_diff[0] * 60) + $t_diff[1];
Nico
Est ce normal que date("H:i",0) donne 1:00 ??
Je cherche à faire une soustraction entre 2 heures, pour calculer une durée et j'ai un ecart de 1h. Et en effectuant des tests pour voir ou était l'erreur j'en suis arrivé à faire une difference entre 2 même heure et ça m'a renvoyé 1:00.
Donc la simplicité voudrait que je soustrait 1h mais je voudrait comprendre pourquoi date("H:i",0) donne 1:00 !!
merci d'avance
voici mon code:
$h1 = 10;
$m1 = 00;
$h2 = 12;
$m2 = 00;
$heure2 = mktime($h2,$m2);
$heure1 = mktime($h1,$m1);
$diff = $heure2 - $heure1;
$diff = date("H:i",$diff);
$t_diff = explode(":",$diff);
$duree = ($t_diff[0] * 60) + $t_diff[1];
Nico
A voir également:
- Calcul de la durée entre 2 heures
- Supercopier 2 - Télécharger - Gestion de fichiers
- Comment calculer la moyenne sur excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Modifier durée story facebook - Guide
- 2 ecran pc - Guide
1 réponse
Oui j'ai déjà eu ce soucis. J'ai pas creusé l'affaire mais il semble qu'un timestamp Unix ayant pour valeur 0 peut représenter le 1er janvier 1970 à 1 heure du matin (au lieu du 1er janvier 70 à minuit).
Mais je pense que la raison est simple. Le 0 en timestamp Unix est le 01/01/1970 à minuit heure UTC.
Or nous on est en UTC + 2 (heure d'été Paris).
Et sans l'heure d'été on est en UTC +1
https://www.horlogeparlante.com/
Ce qui signifie que le 01/01/1970 à 00:00 en UTC correspond à 01/01/1970 à 01:00 heure d'hivers Paris. Donc le timestamp UNIX à 0 chez nous hors heure d'été correspond à ça (01/01/1970 à 01:00).
Bon on devrait être en heure d'été mais peut être que par défaut php l'oublie pour des trucs comme ça.
Voilà tu devrais peut être te mettre par défaut en utc avant de faire tes calculs, puis restaurer tes fuseaux après coup
https://www.php.net/manual/fr/function.date-default-timezone-set.php
http://fr2.php.net/manual/fr/function.date-default-timezone-get.php
Mais je pense que la raison est simple. Le 0 en timestamp Unix est le 01/01/1970 à minuit heure UTC.
Or nous on est en UTC + 2 (heure d'été Paris).
Et sans l'heure d'été on est en UTC +1
https://www.horlogeparlante.com/
Ce qui signifie que le 01/01/1970 à 00:00 en UTC correspond à 01/01/1970 à 01:00 heure d'hivers Paris. Donc le timestamp UNIX à 0 chez nous hors heure d'été correspond à ça (01/01/1970 à 01:00).
Bon on devrait être en heure d'été mais peut être que par défaut php l'oublie pour des trucs comme ça.
Voilà tu devrais peut être te mettre par défaut en utc avant de faire tes calculs, puis restaurer tes fuseaux après coup
https://www.php.net/manual/fr/function.date-default-timezone-set.php
http://fr2.php.net/manual/fr/function.date-default-timezone-get.php