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 une année à une date


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut [Dates] Ajouter une année à une date
    Bonjour,

    Je récupère une date de ma table dans le format suivant 2006-10-29 09:11:17 et que je mets ensuite au format français avec cette fonction :
    date("d/m/Y", strtotime($info_profil_inscrit[2]));

    Ce que je voudrais faire c'est ajouter une année à cette date. J'ai essayé avec la fonction mktime() mais sans succès.

    merci pour votre aide.

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Salut tu peux récupérer 2006-10-29 09:11:17 sous forme de timestamp comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $timestamp = strtotime($info_profil_inscrit[2]);
    puis lui ajouter une année tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $timestamp += (365 * 24 * 3600);
    et ensuite l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo date("d/m/Y", $timestamp);
    @+
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Pour faire des calculs de date, le plus pratique est de travailler avec les timestamp (un nombre de secondes depuis la date origine UNIX).
    Soit tu stocke tes dates à ce format dans ta base (ce que je préfère), soit tu parse tes dates avant calcul (qui est un choix tout aussi valable).
    Mais tu peux aussi choisir de bosser en heures, en jours ou en mois, et tout cela influera sur ton code.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Utilise plutôt substr() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date=substr($info_profil_inscrit[2], 5, 2).'/'.substr($info_profil_inscrit[2], 8, 2).'/'.substr($info_profil_inscrit[2], 0, 4)+1;
    Cela permet de traiter des dates antérieures au 1er janvier 1970 (début du timestamp UNIX).

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par vg33
    Utilise plutôt substr() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date=substr($info_profil_inscrit[2], 5, 2).'/'.substr($info_profil_inscrit[2], 8, 2).'/'.substr($info_profil_inscrit[2], 0, 4)+1;
    Cela permet de traiter des dates antérieures au 1er janvier 1970 (début du timestamp UNIX).
    Vrai, mais est-ce bien utile ?
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut
    merci à tous !

    j'ai utilisé la solution de genova

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par jml94
    Vrai, mais est-ce bien utile ?
    Oui, s'il utilise des dates antérieures au 01/01/1970. Sinon, les méthodes se valent à peu près.

  8. #8
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    et si c'est une Année bissextile ca marche aussi en faisant + (365*24*3600) ?

    list($jour,$mois,$annee) = explode("/", $date);

    $dateplus1 = mktime(0, 0, 0, $mois, $jour, $annee+1);

    Ca ne marche pas ca?

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par morgan47
    et si c'est une Année bissextile ca marche aussi en faisant + (365*24*3600) ?

    list($jour,$mois,$annee) = explode("/", $date);

    $dateplus1 = mktime(0, 0, 0, $mois, $jour, $annee+1);

    Ca ne marche pas ca?
    Ouarf, j'avais hésité à mettre la remarque, de peur de passer pour un intégriste.
    Bien vu.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

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

Discussions similaires

  1. Ajout d'un mois ou d'une année à une date
    Par vaderetro33 dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/05/2010, 20h05
  2. Réponses: 2
    Dernier message: 16/11/2007, 16h30
  3. [Dates] Fonction date: ajouter 3 jours à une date
    Par bobic dans le forum Langage
    Réponses: 8
    Dernier message: 12/03/2007, 11h05
  4. [Dates] Ajouter un mois à une date
    Par Higestromm dans le forum Langage
    Réponses: 8
    Dernier message: 17/01/2006, 15h27
  5. Ajouter une année à la date en cours
    Par marie10 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/08/2005, 11h30

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