Bonjour, je suis confronté à un bug PHP bien énervant sur les dates.
Contexte :
Je dois reculer dans le temps afin de récupérer toutes les heures qui matchent une condition.
Pour celà j'utilise la fonction suivante dans une bouche :
$timeStamp = strtotime('-1 hour',$timeStamp);
Seulement, je suis confronté à un bug PHP : lorsque l'on arrive sur une date correspondant au changement d'heure (ex : 28 mars 2010 à 3 heures du matin), la fonction strtotime perds pieds et renvoie toujours la même date !
Vous pouvez reproduire le bug à l'aide des 2 codes suivants (attention, boucles infinies) :
Code 1
1 2 3 4 5
| $timeStamp = time();
while (true) {
echo date('Y-m-d H',$timeStamp)."\n";
$timeStamp = strtotime('-1 hour',$timeStamp);
} |
Code 2
1 2 3 4 5
| $dateTime = new DateTime(date('Ymd H:i',time()));
while (true) {
echo $dateTime->format('Y-m-d H')."\n";
$dateTime->modify('-1 hour');
} |
J'utilise PHP 5.2 (testé sur 5.0.2 et 5.2.13).
Reproduisez-vous sur PHP 5.2 ?
Le bug est-il toujours présent sur PHP 5.3 ?
Merci d'avance pour votre aide.
Partager