Comportement étonnant de Checkdate

Eléphant du PHP | 256 Messages

03 août 2011, 11:41

Bonjour,

Si j'utilise

Code : Tout sélectionner

var_dump(checkdate(08, 03, 2011)); var_dump(checkdate(8, 3, 2011)); var_dump(checkdate(01, 01, 2011)); var_dump(checkdate(1, 1, 2011)); var_dump(checkdate(2, 29, 2008));
s'affiche...
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
Pourquoi Php n'aime pas la date du jour avec les zéros selon vous ? :mrgreen:

J'utilise la version 5.25 de Php.

Merci pour votre aide.

Cordialment,

Gasaprd

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

04 août 2011, 22:37

J'aurais tendance à dire que c'est parce que quand un nombre est préfixé par un 0, la plupart des langages les considèrent comme des nombres exprimés en base 8 (octale)

Et un 08 en octale (où les nombres vont de 0 à 7) ... ben c'est comme un 2 en binaire, ça doit pas lui plaire :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 256 Messages

04 août 2011, 23:58

Bonjour,

Je te remercie de ta réponse, Ryle. :)

Depuis, je me suis tourné vers le package "Date" de Pear, qui semble plus fiable, à défaut de pouvoir mettre à jour ma version de Php.

J'ai galéré, car je n'ai pas l'habitude de coder en mode "objet", mais j'ai pu avancer à petit pas. :mrgreen:

Cordialement,

Gaspard

Benpic
Invité n'ayant pas de compte PHPfrance

20 mars 2012, 19:50

Je suis un peu en retard pour une réponse, mais pour éviter que checkdate() renvoie FALSE alors que les jours et mois sont précédés de 0, mets les arguments entre ' '

ex:


var_dump(checkdate('02', '29', '2012'));

var_dump(checkdate('08', '09', '2012'));

var_dump(checkdate('02', '01', '2012'));

Bonne chance