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] manipulation de date : ajouter 21 jours


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par défaut [Dates] manipulation de date : ajouter 21 jours
    bonjour tout le monde;
    j'ai lu pas mal de trucs en ce qui concerne mais rien de très explicite, j'ai un petit souci sur le calcul d'une date.
    je sais avoir la date du jour avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $datep=date("d-m-Y");
    Je veux calculer une date dans 3 semaines, soit 21 jours.Mais si je calcule le jour du mois + 21 je risque d'afficher le 37 eme jour du mois ou tomber sur un dimanche ou jours feriés. J'espere avoir été clair, si quelqu'un à un avis la dessus, merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Par défaut
    Je pense que le timestamp est incontestablement le mielleur moyen de manipuler les dates

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* Timestamp de l'instant */
    $Today = time();
     
    /* Nombre de secondes à ajouter pour avancer de 21 jours */
    $ThreeWeeks = 1*60*60*24*21;
     
    /* Timestamp de dans 21 jours */
    $InThreeWeeks = $Today+$ThreeWeeks;
     
    /* En plus court */
    $InThreeWeeks = time()+(1*60*60*24*21);
    Ensuite tu peux transformer ton timestamp en date lisible pour le commun des non-geeks :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Date = date('d.m.Y', $InThreeWeeks);
    Ensuite si j'ai bien compris, tu veux éviter de tomber sur un dimanche ou jour ferié ?
    Par exemple si on tombe sur un dimanche, passer au lundi ?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Le plus court pour calculer un décallage de période sur une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //-- pour un décallage d'une journée -------- 
    echo date('d-m-Y', strtotime('+1 day', time()));
    //-- pour un décallage de 3 semaines -------- 
    echo date('d-m-Y', strtotime('+3 week', time()));
    Pour les infos complètes, voir la fonction 'strtotime()'.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Par défaut
    Voici ma façon de faire en general que je trouve très pratique: le mktime qui te renvoi un timestamp.

    http://fr.php.net/mktime

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    date("d-m-Y",mktime(0,0,0,2,8,2008)) => 08-02-2008
    date("d-m-Y",mktime(0,0,0,2,0,2008)) => 31-01-2008 (le jour zero te renvoi au dernier jour du mois precedent
    date("d-m-Y",mktime(0,0,0,2,32,2008)) => 03-03-2008
    Bref selon ce que tu rentre le calcul de la date exacte se fait automatiquement.

    dans ton cas je ferais :
    date("d-m-Y",(mktime(0,0,0,date("n"),date("d")+21,date("Y")));

    Apres côté performance entre ca et la solution de Jeca... je ne saurais pas dire

    bonne journée.

  5. #5
    Membre éclairé Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par défaut
    merci a tous pour votre aide, j'ai desormais plusieurs solutions pour rajouter 21 jours;mais comment faire pour éviter que le jour calculé tombe sur un jours feriés ou un dimanche?
    bonne journée

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    tu connais la fonction date
    ex:
    date("d-m-Y",...cf les posts au dessus...);
    tu verras que si tu utilises
    w tu obtiens le jour de la semaine de 0 (dimanche) à 6(samedi)
    date("w",...cf les posts au dessus...);
    et hop pour les dimanche c'est plié.


    pour les jours fériés y'en a deux types :
    les jours fixes (1er janvier, 1er mai, etc...) ce sont les gentils tu les définis facilement
    pour les jours mobiles c'est plus chaud (il faut retrouver le calcul des jours mobiles)
    et ensuite tu compares ton jour avec les jours fériés

    tu as les fonctions easter_date() ou easter_days() pour le jour de paques
    ensuite l'ascension et Pentecote ça doit être fixe par rapport à paques etc...

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

Discussions similaires

  1. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  2. Manipulation de date : java.sql.Date & Calendar
    Par LeNovice dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/09/2007, 15h59
  3. [Dates] Manipulation des dates/semaines
    Par NoiBe dans le forum Langage
    Réponses: 2
    Dernier message: 20/04/2007, 16h41
  4. [Dates] Manipulation de dates
    Par 78alex78 dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2007, 14h00
  5. [Dates] Manipulation de date
    Par hari37 dans le forum Langage
    Réponses: 7
    Dernier message: 20/12/2006, 22h50

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