IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Bug fonction date()


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    aaaa
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aaaa

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 21
    Points
    21
    Par défaut [Dates] Bug fonction date()
    Bonjour à tous,

    En voulant faire apparaître les X derniers mois, la fonction date me renvoie les infos suivantes :

    November 2006
    December 2006
    January 2007
    March 2007
    March 2007

    April 2007
    May 2007
    June 2007
    July 2007
    August 2007
    September 2007
    October 2007
    November 2007

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $nbMonths = 12;
     
    for($i=$nbMonths; $i>=0; $i--) {
    	$m = date("F Y",mktime(0,0,0,date("m")-$i,date("d"),date("Y")));
    	echo "Mois ".$i." : ".$m."<br />";
    }
     
    ?>
    Le bug s'applique à tous les paramètres de type "mois" (F, m, M, n, t)
    Ma version de PHP est la 4.3.10 et je suis sur Windows XP.

    Quelqu'un a-t-il déjà vu ce problème ??
    Comment puis-je le contourner ?

    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Points : 284
    Points
    284
    Par défaut
    Salut,

    ca marche si tu mets 1 au lieu de date("d") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $m = date("F Y",mktime(0,0,0,date("m")-$i,1,date("Y")));

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Deja ca me fait la meme chose chez moi donc ca n'est pas lié a ta version.

    Ensuite c'est assez simple, aujourd'hui on est le 30/11, du coup pour le mois de février tu essaies d'avoir le 30 février dans ton mktime() et 30 février c'est le 02 mars pour PHP quand tu utilises mktime() comme ca.

    Ensuite ta soustraction date("m")-$i ne fonctionne pas si tu regardes bien, le premier renvoie une chaine que tu essaies de soustraire a un nombre ca te renvoie toujours -$i en plus.

  4. #4
    Membre à l'essai
    Profil pro
    aaaa
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aaaa

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Points : 21
    Points
    21
    Par défaut
    Mais pourquoi n'y ai-je pas pensé plus tôt ??

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dates] Comparer Fonction Date
    Par Mais.Ouais dans le forum Langage
    Réponses: 8
    Dernier message: 02/07/2009, 16h17
  2. [Dates] problème fonction date
    Par tawba dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2009, 16h45
  3. [Dates] Problème de date / recherche fonction
    Par Fluxy dans le forum Langage
    Réponses: 2
    Dernier message: 23/07/2007, 19h12
  4. Réponses: 2
    Dernier message: 16/07/2007, 12h52
  5. [Dates] La fonction date()
    Par fadex dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo