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 Java Discussion :

différence entre 2 dates


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut différence entre 2 dates
    Bonjour,

    j'ai 2 dates et heures dont je voudrais calculer la différence en minutes :
    les dates sont au format String JJ/MM/AAAA, et les heures au format String HHhMM

    voici mon code :

    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
    private String getDuree(String d1, String h1, String d2, String h2) {
     
            GregorianCalendar t1 = new GregorianCalendar(Integer.parseInt(d1.substring(6)),
                                                         Integer.parseInt(d1.substring(3, 5)),
                                                         Integer.parseInt(d1.substring(0, 2)),
                                                         Integer.parseInt(h1.substring(0, 2)),
                                                         Integer.parseInt(h1.substring(3)));
            GregorianCalendar t2 = new GregorianCalendar(Integer.parseInt(d2.substring(6)),
                                                         Integer.parseInt(d2.substring(3, 5)),
                                                         Integer.parseInt(d2.substring(0, 2)),
                                                         Integer.parseInt(h2.substring(0, 2)),
                                                         Integer.parseInt(h2.substring(3)));
            long aTime = t1.getTimeInMillis();
            long bTime = t2.getTimeInMillis();
            long minutes = (bTime - aTime) / 60000;
    ...
    Ca marche dans tous les cas, sauf lorsqu'on est à cheval sur 2 mois :
    exemple :
    d1=30/06/2008 - h1=20h42
    d2=01/07/2008 - h2=02h54
    résultat : 1812 minutes (au lieu de 372)
    Si on change de jour en restant dans le même mois, c'est correct :
    d1=29/06/2008 - h1=19h35
    d2=30/06/2008 - h2=01h47
    résultat : 372 minutes

    Qu'est ce qui cloche ?

    Merci,

    Nico

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Le code qui est fournit marche bien, mais ce qu'il faut savoir, c'est que la gestion des mois commence à 0 et non à 1.

    Du coup, le calcul est fait un mois après la date qui est fournit.
    On tombe sur un mois de 31 jours, donc 1812-372 = 1jour

    30/06/2008 -> devient donc le 30 juillet
    01/07/2008 -> le 1 aout.

    pour cela, il faut soit supprimer 1 de chaque mois.
    Soit utiliser un autre mécanisme de construction de la date, en utilisant un DateFormat par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH'h'mm");
    Date date1 = df.parse(d1 + " " + h1);
    Date date2 = df.parse(d2 + " " + h2);
    long aTime = date1.getTime();
    long bTime = date2.getTime();
    long minutes = (bTime - aTime) / 60000;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    ok ça marche en passant par DateFormat, sauf qu'il faut mettre les instructions dans un try catch à cause des instructions df.parse...

    merci,

    Nico

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Oui, c'est vrai pour le try/catch, je t'ai donné le code sans le tester...

Discussions similaires

  1. différence entre 2 date
    Par tounsi dans le forum Oracle
    Réponses: 15
    Dernier message: 03/01/2006, 15h06
  2. [VBA-E] Différence entre 2 dates
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/12/2005, 13h23
  3. différence entre 2 dates
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/09/2005, 16h30
  4. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 12h24
  5. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34

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