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] Obtenir une date par rapport a une date donnée et un nombre de jour


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de bilou95
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Points : 117
    Points
    117
    Par défaut [Dates] Obtenir une date par rapport a une date donnée et un nombre de jour
    Oui ! c'est encore moi ! ...

    Je suis médiocre de chez médiocre en ce qui concerne les dates ...

    Est il possible d'obtenir une date a partir d'une date donnée et un nombre de jours ?

    En esperant que vous voyez de quoi je parle !

    Merci

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $nbre_jours_increment = 15;
    $ma_date = '18/02/1981';
    $arr_date = explode('/', $ma_date);
    $time_now = mktime(0, 0, 0, $arr_date[1], $arr_date[0], $arr_date[2]);
     
    $time_futur = $time_now + ($nbre_jours_increment * 24 * 3600);
     
    $new_date = date("d/m/Y", $time_futur);
    à l'arrache sans tester
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    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
    /*************
     CALCUL FIN
    *************/
    /** 
    * Calcule le jour de fin à l'aide d'un jour de départ et d'une durée
    * @param $d_deb Date Date début
    * @param $duree Int Durée en nombre de jours
    * @return Date Le jour de fin en format d/m/Y
    */
    function calcul_fin($d_deb, $duree)
    {
        list($d,$m,$a) = explode('/',$d_deb);
    	$deb = mktime( 0, 0, 0, $m, $d, $a );
    	// Durée en secondes*nb de jours
    	$duree *= 3600*24;
    	$fin = $deb+$duree;
     
    	return date("d/m/Y", $fin);
    }
    Testée et approuvée
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  4. #4
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    C'est pas très propre ces calculs à base de seconde "24 * 3600". Chez moi, on change d'heure fin mars et fin octobre
    Pourquoi ne pas utilisez mktime jusqu'au bout ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $nvelle_date = mktime(0, 0, 0, date('m'), date('d') + 5, date('Y'));
    // ou
    $date = mktime(0, 0, 0, 5, 6, 2006);
    $nvelle_date = mktime(0, 0, 0, date('m', $date), date('d', $date) + 5, date('Y', $date))

  5. #5
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    J'ai la flemme de tester là tout de suite mais si date('d',$date) retourne le 31 du mois et que tu ajoutes +5 le timestamp retourné par mktime va être correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mktime(0, 0, 0, date('m', $date), date('d', $date) + 5, date('Y', $date))
    PS: je vois pas le rapport avec le changement d'heure..... on parle de journées complètes ici
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Oui c'est le cas, la fonction mktime gère directement les éventuelles erreurs comme cela est expliqué dans la FAQ dans cette Q/R : Comment obtenir la date d'un jour à l'autre ?

    Sinon si tu veux avoir quelque chose de plus officiel :
    Citation Envoyé par PHP.NET
    mktime() est pratique pour faire des calculs de dates et des validations, car elle va automatiquement corriger les valeurs invalides.

  7. #7
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Je trouvais ma méthode plus jolie mais bon tant pis
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  8. #8
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Je chipote Si le calcul ne porte que sur des dates (pas d'heure), ça ne posera pas de problèmes.
    Mais sur le principe, c'est un peu comme si tu codais une classe, et que au lieu d'utiliser les méthodes pour manipuler (les données de) l'objet, tu modifiais toi même les données de l'objet...

    guitou12: si tu n'aimes la syntaxe... modifies juste le code de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function calcul_fin($d_deb, $duree)
    {
     list($d,$m,$a) = explode('/',$d_deb);
     return date('d/m/Y', mktime(0, 0, 0, $m, $d + $duree, $a));
    }

Discussions similaires

  1. [XL-2007] recupere une valeur par rapport a une date
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/02/2011, 21h13
  2. Recuperer une entrée par rapport a sa date
    Par bastian06n dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/09/2010, 16h36
  3. Réponses: 4
    Dernier message: 12/03/2007, 16h14
  4. [css] Positionnement d'une img par rapport a une autre img
    Par dark_vidor dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 26/02/2006, 00h07
  5. Afficher une fenetre par rapport a une autre
    Par luffy0013 dans le forum MFC
    Réponses: 4
    Dernier message: 14/02/2005, 21h16

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