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 :

Calcul en mois entre deux dates


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 48
    Points
    48
    Par défaut Calcul en mois entre deux dates
    Bonjour,

    La question a peut-être était déjà posé. Je cherche a récupérer le nombre de mois entre deux dates.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    En effet, ça à tendance à revenir souvent

    Exemple: http://www.developpez.net/forums/d10...issu-requetes/

    Bref, utilise DateTime pour faire ce que tu veux faire, y'a tout quoi tu veux: http://www.php.net/manual/en/datetime.diff.php

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup pour ta réponse

    Ça ma beaucoup aidé.

    je poste le code pour ceux qui recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        $datetime1 = new DateTime($DateDébut);
        $datetime2 = new DateTime($DateFin);
        $interval = $datetime1->diff($datetime2);
        $nbday= $interval->format('%m'); //Retourne le nombre de mois
    Encore merci pour ton aide.

  4. #4
    Candidat au Club
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    je sais que le sujet est vieux mais je préfère ajouter ce qui suis afin d'éviter à d'autre de perdre du temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $start = '2008-12-31';
    $end = '2009-12-31';
     $datetime1 = new DateTime($start);
        $datetime2 = new DateTime($end);
        $interval = $datetime1->diff($datetime2);
        $nbmonth= $interval->format('%m'); //Retourne le nombre de mois
    renvoi 0 au lieu de 12

    J'ai fais pas mal de test et en fait la fonction se trompe assez souvent ?!

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    echo $interval->y te donnera 1 puisqu'il y'a exactement un an entre tes 2 dates. Et donc forcement echo $interval->m est à 0.

    Fait un var_dump($interval) en changeant les dates , tu comprendras mieux le fonctionnement de diff.

  6. #6
    Candidat au Club
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Oui merci je n'avais pas bien compris l'utilisation de la fonction.

    Pour ceux qui n'ont pas PHP 5.3 j'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function diff_en_mois_entre_deux_date($start,$end) {
    	//$date_format = YYYY-m-d
    	sscanf($start, "%4s-%2s-%2s", $annee, $mois, $jour);
    	$a1 = $annee;
    	$m1 = $mois;
    	sscanf($end, "%4s-%2s-%2s", $annee, $mois, $jour);
    	$a2 = $annee;
    	$m2 = $mois;
     
    	$dif_en_mois = ($m2-$m1)+12*($a2-$a1);
    	return $dif_en_mois ;
    }

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Du coup, en gardant le mode objet cela donne une fonction de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public static function diffMois($dateDebut, $dateFin) {
    		$dtDeb = new DateTime($dateDebut);
    		$dtFin = new DateTime($dateFin);
    		$interval = $dtDeb->diff($dtFin);
    		$nbmonth= $interval->format('%m');
    		$nbyear = $interval->format('%y');
    		return 12 * $nbyear + $nbmonth;
    	}

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut la reponse donne 0
    Citation Envoyé par yeshelolo Voir le message
    Du coup, en gardant le mode objet cela donne une fonction de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public static function diffMois($dateDebut, $dateFin) {
    		$dtDeb = new DateTime($dateDebut);
    		$dtFin = new DateTime($dateFin);
    		$interval = $dtDeb->diff($dtFin);
    		$nbmonth= $interval->format('%m');
    		$nbyear = $interval->format('%y');
    		return 12 * $nbyear + $nbmonth;
    	}

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Salut MiguelMba

    Tu fais remonter une discussion de 2011, dont le dernier message date de 2015, avec pour seul info "la reponse donne 0" en titre.

    Pas sûr que tu obtiennes beaucoup d'aide.

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

Discussions similaires

  1. [VxiR2] Calcul du nombre de jours par mois entre deux date
    Par trabelsi dans le forum Designer
    Réponses: 4
    Dernier message: 02/10/2017, 15h17
  2. [XL-2007] Calculer le nombre de mois entre deux dates?
    Par EmmanuelleC dans le forum Excel
    Réponses: 11
    Dernier message: 08/06/2010, 04h11
  3. [AC-2007] Calcul du nombre de jours par mois entre deux dates
    Par arouxy dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/01/2010, 08h34
  4. calcul nbre de mois entre deux dates
    Par bambino13 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/07/2009, 18h06
  5. [SQL] Calcul du nombre de mois entre deux dates
    Par Lolie11 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/03/2009, 11h46

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