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] difference entre 2 date


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [Dates] difference entre 2 date
    salut

    je veux calculer la difference entre 2 date en nombre de jour,de mois et d'anne.j'ai réussi de la calculer en timestamp(en nombre de seconde) mais j'ai pas trouve l'astuce pour convertir en nombre de j , m et a

    j'attend vos aides

    merci

  2. #2
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Tu n'as pas du chercher longtemps hein ?

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    oué ;o)

    un jour c'est quoi ? ca serait pas 24 heures ?
    1 h c'est quoi ? ca serait pas 60 minutes ?
    1 minute c'est quoi ? ca serait pas 60 secondes ?

    raisonnement identique avec les années (365.25 jours) et tu divise par 12 pour les mois

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 45
    Points : 54
    Points
    54
    Par défaut
    C'est clair que tu t'ais pas foulé lol
    En prenant le nombre de secondes que tu as obtenu
    Si tu le divises par 60 tu auras alors le nombre de minutes
    Si tu divises ton nombre de minutes par 60 tu auras le nombre d'heures et ainsi de suite

  5. #5
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Citation Envoyé par Fladnag
    oué ;o)

    un jour c'est quoi ? ca serait pas 24 heures ?
    1 h c'est quoi ? ca serait pas 60 minutes ?
    1 minute c'est quoi ? ca serait pas 60 secondes ?

    raisonnement identique avec les années (365.25 jours) et tu divise par 12 pour les mois
    Tout faux.

    Il faut passer par la fonction date() à laquelle tu donne les différents paramètres disponibles ( voir ici ), puis tu donnes à cette fonction le timestamp qui t'interesses avec mktime ou bien strtotime

    Au moins tu es certains de gérer correctement les années bisextiles et autres joyeusetées.

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    je sais tout ca mais je veux le nombre de jours, de mois et d'anne

    exemple:
    date1 = '11-12-2005'
    date2 = '20-02_2007'

    je veux le resulat la diffrence est 1 ans,2mois, X jours

    le probleme c que un mois peut avoir 28,29,30,31 jours

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    ca c'est la solution "propre" ;o)
    les résultats de ma solution ne sont pas tres éloignés tout de meme, et si la question avait été "je cherche une solution mieux que des multiplications et divisions sauvages", ca aurait été une solution... mais bon... si il se foule pas, moi non plus ;o)

  8. #8
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Citation Envoyé par Moloc'h
    Au moins tu es certains de gérer correctement les années bisextiles et autres joyeusetées.
    Commencer par lire la doc. Le nombre de jours dans le mois est gérer par la fonction date() en toute transparence. Tu n'as pas à t'en soucier.

  9. #9
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    J'avais fait un truc du genre pour les heures seulement. Comme la fonction date() gère elle même toutes les subtilités de notre calendrierça devrais te servir une bonne base.

    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
     
    //Calcule le temps écoulé à partir de deux heures au format HH:MM
    //Paramètres : string (HH:MM), string (HH:MM)
    //Retourne   : float $duree
    function tempsEcoule($strDebut, $strFin) {
      $arrayDebut = explode(":",urldecode($strDebut));
      $heureDebut = $arrayDebut[0];
      $minuteDebut = $arrayDebut[1];
      $arrayFin = explode(":",urldecode($strFin));
      $heureFin = $arrayFin[0];
      $minuteFin = $arrayFin[1];
      $debut = mktime($heureDebut, $minuteDebut, 0, 11, 30, 2005);
      $fin = mktime($heureFin, $minuteFin, 0, 11, 30, 2005);
      $duree = $fin - $debut;
      $duree /= 3600;
      return($duree);	
    }
    Pensez à la balise

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 74
    Points
    74
    Par défaut Comparaison de date ?
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    // fonction de calcul
     
    function compare_sec($date1,$date2)
     
     {
     
     $date1 = ereg_replace(" ","-",$date1);
     
     $date1 = ereg_replace(":","-",$date1);
     
     $tab_date1 = explode('-',$date1);
     
     $date2 = ereg_replace(" ","-",$date2);
     
     $date2 = ereg_replace(":","-",$date2);
     
     $tab_date2 = explode('-',$date2);
     
      $data1 = mktime ($tab_date1[3],$tab_date1[4],0,$tab_date1[1],$tab_date1[2],$tab_date1[0]);
     
      $data2 = mktime ($tab_date2[3],$tab_date2[4],0,$tab_date2[1],$tab_date2[2],$tab_date2[0]);
     
      $difference = ($data1 - $data2);
     
    echo $difference.'<br />';
     
     return ((int) ($difference));
     
     }
     
    function compare_min($date1,$date2)
     
     {
     
     return ((int) (compare_sec($date1,$date2)/60));
     
     }
     
    function compare_h($date1,$date2)
     
     {
     
     return ((int) (compare_sec($date1,$date2)/3600));
     
     }
    Pourqoui ca ne marche pas ????
    Sur 2 date que je compare d'un différence de environ 32 a 33H ( Hier a 2 H du mat a Aujourd'hui a midi 30 )
    J'obtient 317 626 H de différence je trouve que cela fait bc , qq1 peut m'aider ?

  11. #11
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    re...

    j'ai trouvé ce petit script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <? function diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2){  
     
    	$today = date("d,m,Y");
    	//echo $today; 
     
     
    	$date = mktime(0, 0, 0, $mois, $jour, $an);  
    	$date2 = mktime(0, 0, 0, $mois2, $jour2, $an2);  
     
    	$diff = floor(($date - $date2) / (3600 * 24));  
    	return $diff;
    	}
    	echo diff_date(30,6,2006,2,6,2006);
    ?>
    Il permet de faire la différence entre deux dates ! Cependant j'aimerais savoir comment on pourrait mettre la variable $today à la place du 2,6,2006 ??? : De cette manière, chaque jour la différence entre les deux dates dimininue ! Mais comment on peut faire ? J'y suis pas arrivé !

    Est-ce avec un echo ?
    Les cours: XHTML, CSS, PHP, Flash et Javascript
    Expliquez votre problème clairement et pensez à remercier ceux qui vous ont aidé.
    N'oubliez pas : Le tag résolu est la meilleure des satisfactions sur developpez.com
    Aucune question technique par MP.

  12. #12
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    ben tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo diff_date(30,6,2006,2,6,2006);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo diff_date(30,6,2006,date("d"),date("m"),date("Y"));
    non? c'est pas ce que tu veux?
    mais pourquoi tu cours?

  13. #13
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    Yes c'est ce que je voulais !!!

    Merci ! Mais pk j'y ai pas pensé lol

    Je pensais qu'il faillait faire un echo !

    Merci bcp !
    Les cours: XHTML, CSS, PHP, Flash et Javascript
    Expliquez votre problème clairement et pensez à remercier ceux qui vous ont aidé.
    N'oubliez pas : Le tag résolu est la meilleure des satisfactions sur developpez.com
    Aucune question technique par MP.

Discussions similaires

  1. [Dates] Difference entre deux dates
    Par bsidy1 dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2009, 13h43
  2. [Dates] difference entre 2 dates
    Par kagura dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2006, 13h01
  3. [Dates] difference entre 2dates
    Par ruty dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2006, 18h59
  4. Réponses: 2
    Dernier message: 04/04/2006, 10h34
  5. Réponses: 1
    Dernier message: 22/09/2005, 00h30

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