OVH Cloud OVH Cloud

Probleme de date : je comprends pas

3 réponses
Avatar
Zouplaz
Bonjour, j'ai la bizarrerie suivante :

$v = mktime(0,0,0,11,7,1966);
die("test = " . date("Y-n-j",$v));

Avec pour résultat :

test = 1969-12-31

Etrange quand même... Alors soit c'est mktime() qui déraille, soit date()


J'avais développé il y a quelques mois une classe me permettant de gérer
facilement les dates (nulles, provenant d'un formulaire, au format
mysql,etc) et plonk, maintenant ça déraille et j'ai identifié les deux
portions de code qui peuvent coincer, contenant les deux appels de
fonctions ci-dessus


Je n'ai jamais eu ce genre de problème avec la version de php que
j'utilisais à l'époque (me souviens plus laquelle).

J'utilise maintenant une 4.3.0



Si quelqu'un peut m'aider... Merci d'avance

3 réponses

Avatar
Olivier Miakinen
Bonjour, j'ai la bizarrerie suivante :

$v = mktime(0,0,0,11,7,1966);
die("test = " . date("Y-n-j",$v));

Avec pour résultat :

test = 1969-12-31


<cit. http://fr2.php.net/manual/fr/function.mktime.php>

mktime() retourne un timestamp UNIX correspondant aux arguments fournis.
Ce timestamp est un entier long, contenant le nombre de secondes entre
le début de l'époque UNIX (1er Janvier 1970) et le temps spécifié.

[...]

Microsoft Windows : Les valeurs négatives des timestamp ne sont pas
supportées sous toutes les versions actuelles de Microsoft Windows. De
ce fait, l'intervalle valide pour les années est de 1970 à 2038, inclus.

</cit.>

Avatar
Olivier Miakinen
Un petit complément à ma réponse précédente...


$v = mktime(0,0,0,11,7,1966);
die("test = " . date("Y-n-j",$v));

Avec pour résultat :

test = 1969-12-31


La date que tu souhaitais était antérieure au 1er janvier 1970, mais
sinon assez quelconque.

En revanche, la date obtenue est exactement la *veille* du 1er janvier
1970. Je soupçonne fortement que le mktime() retourne la valeur -1 pour
toute date « négative », valeur qui représente le 31 décembre 1969 à 23
heures, 59 minutes et 59 secondes. N'est-ce pas ? Pour t'en assurer,
affiche donc la valeur de $v avant de la passer en paramètre de date().

Avatar
G Roydor
mktime renvoie une valeur pour les dates à partir du 1/1/1970
sinon il renvoie -1 donc le 12 décembre 1969
gr

Zouplaz a écrit:
Bonjour, j'ai la bizarrerie suivante :

$v = mktime(0,0,0,11,7,1966);
die("test = " . date("Y-n-j",$v));

Avec pour résultat :

test = 1969-12-31

Etrange quand même... Alors soit c'est mktime() qui déraille, soit date()


J'avais développé il y a quelques mois une classe me permettant de gérer
facilement les dates (nulles, provenant d'un formulaire, au format
mysql,etc) et plonk, maintenant ça déraille et j'ai identifié les deux
portions de code qui peuvent coincer, contenant les deux appels de
fonctions ci-dessus


Je n'ai jamais eu ce genre de problème avec la version de php que
j'utilisais à l'époque (me souviens plus laquelle).

J'utilise maintenant une 4.3.0



Si quelqu'un peut m'aider... Merci d'avance