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

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    mars 2002
    Messages
    38 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2002
    Messages : 38 290
    Points : 65 585
    Points
    65 585
    Billets dans le blog
    1

    Par défaut Différence en nombre de jours entre deux dates

    Une petit fonction que je n'ai pas encore vue dans la FAQ mais mériterais d'y figurer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function diffdate(d1,d2){
    var WNbJours = d2.getTime() - d1.getTime();
    return Math.ceil(WNbJours/(1000*60*60*24));
    }

    Utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var Date1 = new Date(2010,0,1);
    var Date2 = new Date(2011,0,1);
     
    alert(diffdate(Date1,Date2) + ' jours')
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag


    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    mars 2002
    Messages
    38 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2002
    Messages : 38 290
    Points : 65 585
    Points
    65 585
    Billets dans le blog
    1

    Par défaut

    Avec le choix de l'unité de temps
    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
    <script type="text/javascript">
    function diffdate(d1,d2,u){
    div=1
    switch(u){
     case 's': div=1000;
     			 break;
     case 'm': div=1000*60
    			 break;
     case 'h': div=1000*60*60
    			 break;
     case 'd': div=1000*60*60*24
    			 break;
    }
     
    var Diff = d2.getTime() - d1.getTime();
    return Math.ceil((Diff/div))
    }
     
    var Date1 = new Date(2010,0,1);
    var Date2 = new Date(2011,0,1);
     
    alert(diffdate(Date1,Date2,'d') + ' jours\n'+diffdate(Date1,Date2,'h') + ' heures\n'+diffdate(Date1,Date2,'m') + ' minutes\n'+diffdate(Date1,Date2,'s') + ' secondes\n'+ diffdate(Date1,Date2,'') + ' millisecondes')
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag


    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  3. #3
    Responsable Jeux-Concours

    Avatar de vermine
    Profil pro
    Inscrit en
    mars 2008
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : mars 2008
    Messages : 6 292
    Points : 72 774
    Points
    72 774

    Par défaut

    Bonne idée.
    Par contre je me demande si les années bissextiles n'interviennent pas. Et oui, si l'on a les années bissextiles, c'est pour récupérer des jours car une journée ne fait pas exactement 24h. Donc tes calculs de jours sont peut-être à ajuster.
    A vérifier, je ne fais que penser à la théorie.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    23 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 23 648
    Points : 91 580
    Points
    91 580
    Billets dans le blog
    20

    Par défaut

    Citation Envoyé par vermine Voir le message
    Bonne idée.
    Par contre je me demande si les années bissextiles n'interviennent pas. Et oui, si l'on a les années bissextiles, c'est pour récupérer des jours car une journée ne fait pas exactement 24h. Donc tes calculs de jours sont peut-être à ajuster.
    A vérifier, je ne fais que penser à la théorie.
    Yakatester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function diffdate(d1,d2){
    var WNbJours = d2.getTime() - d1.getTime();
    return Math.ceil(WNbJours/(1000*60*60*24));
    }
    var Date1 = new Date(2008,0,1);
    var Date2 = new Date(2011,0,1);
     
    alert(diffdate(Date1,Date2) + ' jours')
    Qui renvoie bien 1096 (365 * 2 + 366) !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    23 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 23 648
    Points : 91 580
    Points
    91 580
    Billets dans le blog
    20

    Par défaut

    Citation Envoyé par SpaceFrog Voir le message
    Une petit fonction que je n'ai pas encore vue dans la FAQ mais mériterais d'y figurer ?
    Si elle y est
    http://javascript.developpez.com/faq...te#nombreJours


    Spaffy !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    mars 2002
    Messages
    38 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2002
    Messages : 38 290
    Points : 65 585
    Points
    65 585
    Billets dans le blog
    1

    Par défaut

    Merci Beef

    Pour le coup des années bissextiles, sachant que le calcul était basé sur les dates système et une différence en millisecondes, je ne me faisais pas de soucis
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag


    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2004
    Messages : 162
    Points : 206
    Points
    206

    Par défaut

    Petit effet de bord par rapport au changement d'heure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function diffdate(d1,d2){
    var WNbJours = d2.getTime() - d1.getTime();
    return Math.ceil(WNbJours/(1000*60*60*24));
    }
    var Date1 = new Date(2010,9,31);
    var Date2 = new Date(2010,10,1);
     
    alert(diffdate(Date1,Date2) + ' jours');
    D'ailleurs, c'est étonnant, le changement d'heure s'est déroule "normalement" dans la nuit du samedi au dimanche, et javascript considère que c'est du dimanche au lundi...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 8
    Points : 7
    Points
    7

    Par défaut

    Bonjour,

    j'arrive un peu tard mais je viens de tester cette fonction pour un client.
    quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function diffdate(d1,d2){
    var WNbJours = d2.getTime() - d1.getTime();
    return Math.ceil(WNbJours/(1000*60*60*24));
    }
    var Date1 = new Date(2011,9,30);
    var Date2 = new Date(2011,10,1);
    alert(diffdate(Date1,Date2) + ' jours');
    j'obtiens 3 jours

    et quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var Date1 = new Date(2011,8,31);
    var Date2 = new Date(2011,9,1);
    alert(diffdate(Date1,Date2) + ' jours');
    j'obtiens 0 jour

    qu'il faille ajouter 1 pour obtenir un nb de jours entre 2 jours ne me pose pas de problème.
    mais ces résultats me font dire que la fonction Date inverse les mois en 31 et ceux en 30.

    Est-ce que quelqu'un a déjà constaté et/ou résolu ce problème?

    Merci.

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    23 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 23 648
    Points : 91 580
    Points
    91 580
    Billets dans le blog
    20

    Par défaut

    Bien entendu, je suppose que tu es au courant que les mois commencent à 0 en JavaScript...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 8
    Points : 7
    Points
    7

    Par défaut

    non, je ne savais pas. j'aurai fait un grand pas aujourd'hui.
    mais je ne comprends pas pourquoi j'ai 3 jours entre le 1er octobre et le 30 septembre, et 0 jour entre le 1er septembre et le 31 aout.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    23 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 23 648
    Points : 91 580
    Points
    91 580
    Billets dans le blog
    20

    Par défaut

    Euh... si les mois commencent à 0, alors 8 c'est pas août, c'est septembre !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 8
    Points : 7
    Points
    7

    Par défaut

    c'est sûr...
    mea culpa...

    merci pour l'info.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    php
    Inscrit en
    août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : php
    Secteur : Distribution

    Informations forums :
    Inscription : août 2017
    Messages : 4
    Points : 6
    Points
    6

    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
    20
     
     
    function dateDiff(date1, date2){
        var diff = {}                           // Initialisation du retour
        var tmp = date2 - date1;
     
        tmp = Math.floor(tmp/1000);             // Nombre de secondes entre les 2 dates
        diff.sec = tmp % 60;                    // Extraction du nombre de secondes
     
        tmp = Math.floor((tmp-diff.sec)/60);    // Nombre de minutes (partie entière)
        diff.min = tmp % 60;                    // Extraction du nombre de minutes
     
        tmp = Math.floor((tmp-diff.min)/60);    // Nombre d'heures (entières)
        diff.hour = tmp % 24;                   // Extraction du nombre d'heures
     
        tmp = Math.floor((tmp-diff.hour)/24);   // Nombre de jours restants
        diff.day = tmp;
     
        return diff;
    }

Discussions similaires

  1. Différence en nombre de jours entre deux dates
    Par PooSoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/05/2012, 11h10
  2. Réponses: 2
    Dernier message: 29/05/2006, 19h16
  3. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  4. nombre de jours entre deux date
    Par mzt.insat dans le forum Langage
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  5. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Fonctions
    Réponses: 3
    Dernier message: 22/09/2005, 15h25

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