Page 1 sur 1

PHP BUG! probleme avec mktime()

Posté : 31 août 2010, 16:06
par savagestudio
bonjour les amis!
j'ai un probleme avec mktime() voici mon code simplifié:

Code : Tout sélectionner

<?php $themonth=8; $prevM = date("M", mktime(0, 0, 0, ($themonth - 1) )); $nextM = date("M", mktime(0, 0, 0, ($themonth + 1) )); echo '$prevM='.$prevM.'<br />$nextM='.$nextM; ?>
//il echo :
// $prevM=Jul // ok
//$nextM=Oct // pas ok!


Jai essayé avec un autre mois:

Code : Tout sélectionner

themonth=9; $prevM = date("M", mktime(0, 0, 0, ($themonth - 1) )); $nextM = date("M", mktime(0, 0, 0, ($themonth + 1) )); echo '$prevM='.$prevM.'<br />$nextM='.$nextM;
//il echo :
$prevM=Aug // ok
$nextM=Oct // ok!


Et aussi :

Code : Tout sélectionner

themonth=10; $prevM = date("M", mktime(0, 0, 0, ($themonth - 1) )); $nextM = date("M", mktime(0, 0, 0, ($themonth + 1) )); echo '$prevM='.$prevM.'<br />$nextM='.$nextM;
il echo:
$prevM=Oct //pas ok
$nextM=Dec // ok!


Donc je ne comprenez pas et j'ai aussi essayer avec les chiffre du mois directement dans la function mktime :

Code : Tout sélectionner

prevM = date("M", mktime(0, 0, 0, 9 )); $nextM = date("M", mktime(0, 0, 0, 11)); echo '$prevM='.$prevM.'<br />$nextM='.$nextM;
il echo:
$prevM=Oct
$nextM=Dec


Je ne comprend pas du tout! est un probleme du server ? ou un bug de PHP ??

Re: PHP BUG! probleme avec mktime()

Posté : 31 août 2010, 16:27
par Berzemus
Bon, il ne faut pas crier trop vite au bug (et c'en est pas un, pour le coup).

Ajoute le paramètre du jour, et le tout rentre dans l'ordre.
$themonth=8;
$prevM = date("M", mktime(0, 0, 0, ($themonth - 1),1 ));
$nextM = date("M", mktime(0, 0, 0, ($themonth + 1),1 ));
echo '$prevM='.$prevM.'
$nextM='.$nextM;
Pour ce qui est du comportement, c'est normal. Quand on ne spécifie pas de jour dans mktime(), il suppose le 31. Or, je te laisse imaginer quelle date donne un timestamp du 31 février..
echo date('c',mktime(0,0,0,2))."\n";
Il fallait juste un peu étudier le comportement de mktime().

Re: PHP BUG! probleme avec mktime()

Posté : 31 août 2010, 16:38
par savagestudio
MERCI pour la reponse tout est rentré dans l'ordre ... #-o =D> :D J'aurais pu y rester toute la journée merci encore et bonjour de la norvège 8-)

Re: PHP BUG! probleme avec mktime()

Posté : 31 août 2010, 19:23
par stealth35
MERCI pour la reponse tout est rentré dans l'ordre ... #-o =D> :D J'aurais pu y rester toute la journée merci encore et bonjour de la norvège 8-)
sinon pour faire ce genre de chose c'est avec strtotime :wink:

Re: PHP BUG! probleme avec mktime()

Posté : 01 sept. 2010, 09:02
par Berzemus
Quand on ne spécifie pas de jour dans mktime(), il suppose le 31.
C'est pas tout à fait juste en fait, c'est juste qu'hier on était le 31, et que donc mktime() prenait comme valeur par défaut le jour courant, c'est tout à fait logique.

De plus, ce sujet n'a pas sa place dans php avancé.

Voilà, je ne pouvais en dormir la nuit, c'est réparé maintenant.