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] Ajouter 12 6 3 1 mois à une date donnée


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut [Dates] Ajouter 12 6 3 1 mois à une date donnée
    Bonjour,
    j'aurai voulu savoir comment ajouter des mois à une date donnée.
    Je pensais faire un explode de la date mais si nous sommes le 30/04/2007 et que j'ajoute 12 mois ça me ferait un 30/16/2007.

    Existe t-il des fonctions php pour gérer ça ? en fait je recupere une date dans une BDD donc sous le format US yyyy-mm-dd et je dois faire des tests sur cette date.

    Merci d'avance

  2. #2
    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
    Tu as plusieurs exemples dans ce post Ajouter des jours a une date

    Il faudra les adapter pour ne pas utiliser la date courante mais ta date donc en la découpant avec des substring ou autres.

  3. #3
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut
    et on peut le faire à partir d'une date donnée ? je vois que là il appelle la fonction date("jj/mm/aaa") et moi c'est le format us

  4. #4
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut
    je n'avais pas lu ta phrase en dessous mais c'est bizar qu'il n'existe rien pour le format ricain ? il repasser par le fr ? j'ai des fonctions qui me permettent de retourner ma date ricain en date fr donc ouep je pense faire avec ça

  5. #5
    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
    Si c'est le format us tu peux faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $jour = date("d", strtotime($dateUS));
    $mois = date("m", strtotime($dateUS));
    // etc...
     
    $vnewDate = date("m/d/Y", mktime(0,0,0,$mois+$offset, $jour, $année));
    strtotime reconnait directement le format US normalement (a tester).

    et sinon tu peux tjs découper la date avec un substring pour récupérer les bonnes valeurs.

    EDIT : je comprends pas ton histoire de format ricain et du fait que ca soit bizarre. Tu appelles la fonction date avec les paramètres voulus, si tu veux une date américaine tu fais date("m/d/Y") tout simplement

  6. #6
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut
    et celle là paraît idéal pour mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = date("Y-m-d", mktime(0,0,0,date("m"), date("d") +5, date("Y"));
    mais je l'adapte pour le mois

    ptite question ils servent à quoi les 0,0,0 ?

  7. #7
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut
    j'ai pigé pour les 0,0,0 !

    Par contre si je fais

    $date = date("2007-04-24", mktime(0,0,0,date("m") +2, date("d"), date("Y")));

    rien ne bouge ma date reste idem

  8. #8
    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
    normal tu n'as pas du regarder comment fonctionnait la fonction date() et tu ne t'es pas servi des exemples que je t'ai donné...

    Le premier paramètre de date() est le format, donc il faut laisser "m/d/Y" !
    Et c'est à mktime() que tu dois passer les bons paramètres! Regardes les docs des fonctions.

  9. #9
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2006
    Messages : 158
    Points : 57
    Points
    57
    Par défaut
    si je suis l'exemple de du sujet fourni :

    $date = date("02/28/2007", mktime(0,0,0,date("m") +2, date("d"), date("Y")));

    et rien ne bouge. Il faut faire differement quand on utilise une date donnée ?

    ou faire comme ça plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
     
    //the date of the variable holding the original date value
    $date = "2007-04-30"; 
     
    //format the date for mktime() function -- you need day, month, year
     
    $year = substr($date, 0,4); 
    $month = substr($date, 5, 2); 
    $day = substr($date, 8, 2); 
     
    //check the results
    echo $year; 
    echo "<br>"; 
    echo $month; 
    echo "<br>"; 
    echo $day;
     
    //the variable to hold the new date plus 14 days
    $new_date = date("Y-m-d", mktime(0, 0, 0, $month, $day +14, $year)); 
     
    //check the results of new date
    echo "<br>";
    echo $new_date; 
     
    ?>

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

Discussions similaires

  1. Ajout de jours ou de mois à une date
    Par stelincat dans le forum Général Python
    Réponses: 3
    Dernier message: 13/12/2010, 15h28
  2. ajouter 8 mois à une date
    Par Myfred dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 07/03/2007, 11h35
  3. Requête Access 2003 : Ajouter 6 mois à une date
    Par billy123 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/02/2007, 16h26
  4. [Dates] Ajouter un mois à une date
    Par Higestromm dans le forum Langage
    Réponses: 8
    Dernier message: 17/01/2006, 15h27
  5. ajouter 1 mois à une date dans une requete
    Par alain.lc dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 04/04/2005, 12h05

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