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

JavaScript Discussion :

Temps écoulé entre 2 dates


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut Temps écoulé entre 2 dates
    Bonjour,

    je vous écris parce que je n'en peux plus Je me prends la tête avec deux dates là et j'en ai tout simplement marre. Je ne comprends pas exactement où ça va pas et ça m'énèrve

    Je récapitule :
    > j'ai une date d'inscription sur le site
    > je veux le temps écoulé depuis cette date d'inscription

    > donc temps écoulé entre date d'inscription et aujourd'hui, en jours/heures/minutes.

    J'ai fait :
    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
    46
    47
    48
    49
     
    var daydate = new Date();
    var sincetime = daydate.getTime();
    var elements = $$('.since_date');
    for(i=0;i<elements.length;i++) {
     
    	var inscriptiondate = elements[i].previous().innerHTML; // jj/mm/aa
    	var inscriptionheure = elements[i].next().value; // hh/ii/ss
     
    	inscriptiondate = giveTimestamp(inscriptiondate,inscriptionheure); 
     
    	// timestamp de la différence
    	var sincedate = inscriptiondate - sincetime;
     
    	sincedate = sincedate/86400000; // nb de jours
     
    	var nbjours = Math.floor(sincedate); // différence positive
    	nbjours += ' jours';
     
    	// Récupération heures et minutes
    	var strsince = sincedate.toString();
    	var splitdate = strsince.split('.');
    	var hours = (sincedate-splitdate[0])*24; // on enlève le nombre de jours et on transforme en heures
     
    	hours = hours.toString();
    	var splith = hours.split('.');
    	var minutes = (hours-splith[0])*60;//console.log(minutes); // on enlève le nombre d'heures et on transforme en minutes
     
    	sincedate = nbjours+' '+Math.floor(hours)+'h '+Math.floor(minutes)+'m';
     
    	elements[i].update(sincedate);
    	elements[i].innerHTML;
    }
     
    function giveTimestamp(adate,anhour) {
    	var splitdate = adate.split('/');
    	var splithour = anhour.split('/');
     
    	var date = new Date();
    	date.setFullYear(adate.substr(6,4));
    	date.setMonth(adate.substr(3,2));
    	date.setDate(adate.substr(0,2));
    	date.setHours(splithour[0]);
    	date.setMinutes(splithour[0]);
    	date.setSeconds(splithour[0]);
    	date.setMilliseconds(0);
     
    	return date.getTime();
    }
    Je récupère ma date et mon heure d'inscription (inscriptiondate et inscriptionheure). Et j'ai l'impression qu'ensuite je me mélange bien les pinceaux dans tout ça

    Un peu d'aide serait vraiment la bienvenue ! Merci

  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
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Pourquoi se perdre dans des substr ???

    http://javascript.developpez.com/faq...te#nombreJours
    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

    Venez sur le Chat de Développez !

  3. #3
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut

    les mois commencent à 0 et setfullYear commence en an 0

  4. #4
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Merci pour vos réponses.

    Voici ce que j'ai fait :

    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
     
     
    var daydate = new Date();
    var sincetime = daydate.getTime();
    var elements = $$('.since_date');
    for(i=0;i<elements.length;i++) {
     
    	var inscriptiondate = elements[i].previous().innerHTML; // jj/mm/aa
    	var inscriptionheure = elements[i].next().value; // hh/ii/ss
     
    	var splitdate = inscriptiondate.split('/');
    	var splithour = inscriptionheure.split('/');
    	inscriptiondate = new Date(splitdate[2],splitdate[1],splitdate[0],splithour[0],splithour[1],splithour[2]);
     
    	var diffdate = diffdate(daydate,inscriptiondate);
     
    	elements[i].update(diffdate);
    	elements[i].innerHTML;
    }
     
    function diffdate(d1,d2){
    	var WNbJours = d2.getTime() - d1.getTime();
    	return Math.ceil(WNbJours/(1000*60*60*24));
    }
    J'obtiens comme erreur : Uncaught TypeError: number is not a function sur la ligne var diffdate = diffdate ...

    Et pour la première date que j'ai : le 20/03/2012, j'obtiens une différence de 45 jours avec aujourd'hui

  5. #5
    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
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    et diffdate() est déclarée ou ?
    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

    Venez sur le Chat de Développez !

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Entre aujourd'hui et le 20 avril, ca fait bien 45 jours

  7. #7
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    et diffdate() est déclarée ou ?
    juste en dessous de mon for. Et tout ça se trouve dans un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Event.observe(document, 'dom:loaded', function () {
    Matthieu2000 > oui mais j'avais le mois de mars, j'avais oublié l'histoire des mois qui débutent à 0 et non 1 je croyais l'avoir pris en compte mais j'ai dû effacer cette partie là !

  8. #8
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Bon, c'est ok, ça fonctionne. J'obtiens un résultat en jours, il faudrait que j'ai le détail en jours, heures et minutes !

    C'est possible de récupérer les chiffres après la virgule quand on calcule le nombre de jours ?

  9. #9
    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
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Des fois je me demande à quoi ça sert que je donnes des liens ...
    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

    Venez sur le Chat de Développez !

  10. #10
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    J'ai bien regardé ton lien, j'ai bien vu qu'on pouvait sélectionner jours ou heures au choix en le spécifiant dans la fonction.

    Mais j'aimerai avoir les 2 voire les 3 avec les minutes pour afficher : depuis tant de jours heures minutes.

    Ou alors j'ai mal compris la fonction donnée dans le lien.

  11. #11
    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
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Extrait du lien de la FAQ ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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');
    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

    Venez sur le Chat de Développez !

  12. #12
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Arf, j'avais pas tout saisi ...

    Par contre il y a quelque chose que je ne comprends pas (oui encore), pour la date du 20/03/2012, j'obtiens donc ceci :

    -75 jours
    -1823 heures
    -109433 minutes
    -6566026 secondes
    -6566026439 millisecondes
    Sauf que moi j'aimerai que les 1823 heures se transforment en jours et les minutes en heures etc.
    Au départ j'obtiens par exemple : 75.23 jours.
    Il faudrait donc que j'ai au final : 75 jours 5h et 52 minutes

    Et je n'ai pas l'impression que cette fonction fasse ce que je souhaite en fait. Après c'est peut-être à moi d'écrire la fonction qui va bien, il n'y a peut-être pas spécialement de fonctions pour ça ?

  13. #13
    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
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    alors passe par les getHours() getMinutes() etc ...
    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

    Venez sur le Chat de Développez !

  14. #14
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    J'utilise ces fonctions sur la différence que j'obtiens du coup ? Raaaah j'en ai marre des dates u_u

    Merci SpaceFrog pour ton aide !

    [EDIT] : bon ça y est, j'ai résolu mon problème ! je fais les opérations moi même pour obtenir mon détail tout pile jours heures minutes !

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

Discussions similaires

  1. Calcul Temps écoulé entre 2 dates
    Par gweddy dans le forum iReport
    Réponses: 4
    Dernier message: 18/12/2017, 16h14
  2. Calculer le temps écoulé entre deux dates
    Par ramoucha23 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 25/08/2016, 17h48
  3. [XL-2007] Calculer le temps écoulé entre 2 dates
    Par marie-dominique dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/01/2012, 17h37
  4. Temps écoulé entre 2 dates et 2 horaires
    Par christ-94 dans le forum VBA Access
    Réponses: 8
    Dernier message: 25/01/2009, 17h53
  5. Temps écoulé entre 2 dates
    Par casafa dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 23/12/2005, 03h04

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