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 d'heures entre deux dates


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut Nombre d'heures entre deux dates
    Bonjour,

    Ma question est la suivante : comment récupérer le temps (au format HH:mm:ss) entre deux dates ?

    Par exemple :
    - D1 : 2009/01/13 14:30:00
    - D2 : 2009/01/12 02:00:00

    Alors D1 - D2 nous donnerait 36:30:00

    Est-ce possible ?

    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, c'est un sujet souvent traité sur le forum.

    Il suffit de récupérer le nombre de millisecondes entre les 2 dates (Date.getTime()), et ensuite une simple division par le nombre de millisecondes/heure pour avoir le nombre d'heures. Ensuite, utilise le reste pour avoir le nombre de minutes.

  3. #3
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    A noter que Java 7 va introduire une nouvelle API de date, avec la notion d'intervalle et de période. Celle-ce sera fortement inspirée de Joda Time, qui est déjà utilisable.

    Par contre, pour ton besoin, jaymz, c'est peut-être un peu lourd...

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    j'arrive à récupérer le nombre d'heures, mais pour les minutes comment faire svp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Date d1 = stringToDate("13-01-2009 14:45:00", "dd-MM-yyyy HH:mm:ss");
    Date d2 = stringToDate("12-01-2009 02:00:00", "dd-MM-yyyy HH:mm:ss");
     
    Date d3 = new Date(d1.getTime() - d2.getTime());
    System.out.println("Hours : " + d3.getTime()/1000/60/60);

  5. #5
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Pourquoi passes-tu par un objet Date ? Les millisecondes suffisent.

    Pour les heures, tu as fais une division entière, pour les minutes tu récupères le reste, par un soustraction ou par un modulo (%).

  6. #6
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Voila la syntaxe du modulo, ensuite tu devrais trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reste = nombre1 % nombre2

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Ouais ayé c'est bon
    Le boulet je vous jure

    Sinon, p'tite question avant de mettre en Résolu : est-ce que c'est sûr à 100% de faire ce calcul soi-même ? Les objets comme Calendar ne permettent pas d'obtenir ce genre de résultat ?

  8. #8
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Oui c'est sûr à 100%, c'est une simple soustraction et une division.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    Oui c'est sûr à 100%, c'est une simple soustraction et une division.
    Ben en fait, tout dépend de ce que tu appelle le nombre d'heures entre 2 dates. La tu aura le nombre d'heures on va dire physique, celle réellement ressenties par les personnes. Mais t'aura pas le nombre d'heure "calendrier" qui tiens compte des décalages dus aux heures d'hiver. Par exemple, dans ton cas, si tu fait la différence entre le 1er janvier 2009 à 11h05 et les 1er juillet 2009 à 11h05, t'aura pas un multiple de 24 heures, il va y avoir un décalage d'une heure.

  10. #10
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    De manière générale, pour comparer des dates (ou plutôt heures), il faut utiliser l'heure UTC.

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Ok, merci pour vos réponses.
    Je mets en "Résolu".

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Rajoutons qu'il existe l'enum java.util.concurrent.TimeUnit depuis Java 1.5 qui permet de convertir automatiquement (plus besoin de se casser la tête avec des divisions et autres)

    Dans ce cas-ci, il aurait fallu l'utiliser comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Date d1 = stringToDate("13-01-2009 14:45:00", "dd-MM-yyyy HH:mm:ss");
    Date d2 = stringToDate("12-01-2009 02:00:00", "dd-MM-yyyy HH:mm:ss");
     
    long intervalle = d1.getTime() - d2.getTime();
    System.out.println("Hours : " + TimeUnit.HOURS.convert(intervalle, TimeUnit.MILLISECONDS));
    System.out.println("Minutes : " + TimeUnit.MINUTES.convert(intervalle, TimeUnit.MILLISECONDS));
     
    // ou
     
    System.out.println("Hours : " + TimeUnit.MILLISECONDS.toHours(intervalle));
    System.out.println("Minutes : " + TimeUnit.MILLISECONDS.toMinutes(intervalle));

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Merci dingoth, j'essaie de suite

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

Discussions similaires

  1. [SQL] calcul du nombre d'heure entre deux dates
    Par ahmedbj dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/03/2009, 12h10
  2. Réponses: 1
    Dernier message: 30/01/2008, 16h47
  3. [Dates] Nombre jours ouvrés entre deux dates
    Par Yali dans le forum Langage
    Réponses: 4
    Dernier message: 28/12/2005, 12h05
  4. Comptage du nombre de Samedi entre deux date
    Par lito74 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/12/2005, 19h01
  5. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Langage
    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