Page 1 sur 1

comparaison de 2 dates : c'est quoi ce bug ?

Posté : 15 août 2006, 17:04
par jeff31
Slt,

je compare deux dates avec la fonction trouvée sur le forum. Ca marche jusqu'à une certaine date. Ainsi j'ai testé de comparer date de maintenant avec le 25/01/2037, ca me donne un écart de 11120 jours.
Mais après j'ai testé la même comparaison avec le 25/01/2038, et là ça me donne un écart de -13376 jours.
Je sais pas pourquoi j'obtiens tout à coup une valeur négative. Si vous avez une idée ?!

Le code utilisé :
<?
$annee = "2037";
$mois = "01";
$jour = "25";
$timestamp = mktime(0,0,0,$mois,$jour,$annee);
				
$maintenant = time();
$ecart_secondes = $timestamp - $maintenant;
$ecart_jours = floor($ecart_secondes / (60*60*24));
echo"Ecart jours : $ecart_jours";
?>

Posté : 15 août 2006, 17:41
par Hubert Roksor
Pour résumer, mktime() transforme une date en "timestamp UNIX" (nombre de secondes écoulées depuis le 1er janvier 1970). Les ordinateurs "comptent" en 32 bits, et ça suffit juste à représenter des nombres allant de -2147483648 à 2147483647. En 2038, plus de 2147483647 secondes se seront écoulées, donc les ordinateurs ne peuvent plus représenter de "timestamp UNIX" pour cette date et ça produit une erreur. Un peu comme une calculette solaire à qui on demande de multiplier 9999999 et 9999999.

Pour plus d'infos, Google "2037" ou "2038".

Pour calculer en PHP des intervalles entre des dates si eloignées il te faudra regarder du côté de PEAR, il doit y avoir un package appelé "Date". Si mes souvenirs sont bons il devrait y avoir du mieux dans PHP 5.2 sinon.

Posté : 15 août 2006, 18:02
par jeff31
OK merci pour l'info !

Comme je dois manipuler pleins de dates au delà de 2038 c'est bon à savoir.

Je vais regarder du côté de PEAR alors, mais je connais pas du tout encore. Ca s'installe par l'hébergeur du site ou c'est des scripts à mettre par FTP ?