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

Collection et Stream Java Discussion :

Nombre de jours entre 2 dates


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Par défaut Nombre de jours entre 2 dates
    salut,
    Comment ontenir le nombre de jours compris entre 2 dates?
    merci

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    La classe Date à une méthode getTime ( voir javadoc ) qui retourne le nombre de milliseconde depuis le 1er janvier 1970. la différence entre deux appels de méthode, le tout divisé par le nombre de millisecondes contenues dans une journée te donneras le nombre de jours de différence.

  3. #3
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Voir la ici !

    Si tu veux le nombre de jours calendaires...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Date date1 = new Date();
    Calendar calendrier1 = Calendar.getInstance();
    calendrier1.setTime(date1);
    int jours1 = calendrier1.get(Calendar.DAY_OF_YEAR);
    Date date2 = new Date();
    Calendar calendrier2 = Calendar.getInstance();
    calendrier2.setTime(date2);
    int jours2 = calendrier2.get(Calendar.DAY_OF_YEAR);
    System.out.println(jours2-jours1);

  4. #4
    Membre confirmé Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Citation Envoyé par g_rare
    Voir la ici !

    Si tu veux le nombre de jours calendaires...
    [...]
    Euh, ton truc ne marche que si tu souhaites avoir la différence de jour dans la même année. Sinon, tu es bien obligé de passer par le nombre de ms :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double ms = calendarEnd.getTimeInMillis() - calendarBegin.getTimeInMillis();
    			long nbDays = Math.round(ms / (24 * 60 * 60 * 1000));
    Enjoy.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Bonjour,

    Je relance ce post à cause d'un truc tout con mais la solution donnée ne marche pas

    Si ont par du principe que le nb de milliseconde dans une journée varie en fonction de la date c'est pas bon :s

    Une autres solution par hasard?

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Enfaîte c'est bon avec un arrondi et bien passer à mettre la date de début à l'heure suivante 0:0:0:0 et l'heure sur la date de fin à 23:59:59:59 et c'est bon

    Et bien penser à l'arrondi pcq l'ont perd qlq centième.
    J'ai vu un -1 sur mon post précédent, pour ma défence c'est un expert java avec + de 10 ans d'xp qui ma dit de faire gaffe au timestamp le nb de millisecondes n'est pas égal d'une date à l'autre.

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu pourras lui demander de calculer quand sera le premier jour où il y aura une erreur due à cette différence de qqs ms. Parce qu'effectivement, comme on calcule en jours, il faut que la différence cumulée fasse plus de 0.5j pour que cela ait un impact !

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    De toute façon si on veut pas avoir de problème avec des millisecondes, il suffit de les mettre elles aussi à zéro, comme pour l'heure, les minutes et les secondes. Cet "expert Java" n'y connaît rien, c'est une chose de pas savoir mais c'en est une autre de ne pas le deviner, un expert Java aurait deviné.

    Le problème est pas là. Le vrai problème c'est plutôt les changements d'heure.
    Tous les jours de l'année ne font pas 24 heures. Il y en a un qui fait 23 heures et un autre qui fait 25 heures. Le calcul du nombre de millisecondes ne suffit pas. Certes, un calcul flottant et un arrondi, ça résout le problème. Il n'y a jamais plus d'une heure d'erreur, ce qui, même sur un seul jour, reste le plus proche du résultat correct.
    Mais ça fait pas super propre. Si on programme comme ça sans indiquer exactement pourquoi, la prochaine personne qui passe par là, va virer les flottants et les arrondis, parce qu'ils n'ont pas leur place ici : ce sont des calculs entiers. C'est important d'indiquer que tous les jours ne font pas 24 heures, pourquoi, qu'il peut donc y avoir une erreur et que le calcul exact est compliqué, d'où cette méthode préférée.

    Ah, et bien sûr, c'est typiquement le genre de choses qui devraient motiver à utiliser Joda-Time, une bibliothèque third party de gestion des dates, qui sait dire le nombre de jours calendaires entre deux dates.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Pourquoi tant d'agressivité :/

    Non plus sérieusement c'est un échange de couloir que j'ai eu avec lui genre à tu manipule des dates fait gaffe au timestamp.

    Et il avait raison si ont reprend mon soucis initial
    dernier jour a 0:0:0:0 (h:m:s:ms) au lieu de 23:59:59 logique et rien a voir avec les pb de ms dit plus haut je perd une journée.

    Ensuite sans prendre en compte le conseil sur les timestamp je balance mon résultat dans un integer alors je reperd une journée si ont par du principe que les ms sont égaux chaque jours alors la différence entre 2 dates à minuit serait entier alors que la se n'est pas le cas.

    Donc son conseil de couloir n'était pas si nul que ça.

    Sans le contexte dire qu'il n'y connait rien, c'est un jugement facile et rapide...

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben oui, mais c'est pas du tout comme ça que tu avais présenté les choses. Ce que tu as dit est en substance "c'est un expert Java qui m'a dit de faire comme ça, c'est pas moi." Et cela était faux. Un expert Java t'a donné un conseil, tu as fait tes déductions à ta sauce et tu nous as parlé de ce que tu as fait à la fin. Pas pareil.

    J'ai peu de tolérance quand on me sort le mot "expert." Mon premier réflexe est de dire que ce mot n'a rien à faire dans la conversation : un expert ne se dit pas, il se montre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [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
  2. nombre de jours entre deux date
    Par mzt.insat dans le forum Langage
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  3. Nombre de jours entre 2 dates
    Par Delphi-ne dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/10/2005, 23h12
  4. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2005, 15h25
  5. calcule du nombre de jours entre 2 dates
    Par nazimb dans le forum ASP
    Réponses: 4
    Dernier message: 28/09/2004, 15h22

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