Décalage horaire avec strtotime

Eléphant du PHP | 80 Messages

03 févr. 2021, 14:54

Bonjour,

Je me heurte à un souci.

Je fais les 2 affichages suivants :
Echo date("d-m-Y H:i", strtotime("-3 hours 30 minutes"));
Echo date("d-m-Y H:i", time());

Et l'affichage est le suivant :
03-02-2021 11:16
03-02-2021 13:46

J'ai bien un date_default_timezone_set('Europe/Paris'); Même si avec l'affichage du time(), cela se confirme de toute façon..

Pourriez-vous me dire où se situe mon erreur, et donc, pourquoi j'ai 2h30 en moins au lieu des 3h30 demandées.

En vous remerciant !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 févr. 2021, 16:22

Hello !

C'est à priori un problème de gestion de fuseau horaire, voire d'heure d'été.

Dans la doc de strtotime, il y a cet avertissement : L'horodatage Unix que cette fonction retourne ne contient pas d'information à propos des fuseaux horaires. Pour faire des calculs avec les informations de date/moment, vous devriez utiliser DateTimeImmutable qui est plus capable...

Pas sûr que cela aide, mais cela peut être une piste :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 févr. 2021, 08:54

Code : Tout sélectionner

strtotime("-3 hours 30 minutes")
Là tu demandes -3h30 mais sans indiquer explicitement par rapport à quoi.
Peut-être qu'en indiquant la date et l'heure de départ, ça éviterait le problème de fuseau horaire.
Quand tout le reste a échoué, lisez le mode d'emploi...