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

Android Discussion :

Calcul de durée


Sujet :

Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 090
    Points : 1 055
    Points
    1 055
    Par défaut Calcul de durée
    Bonjour à toutes et à tous,

    Je voudrais calculer la durée entre deux dates données au format suivant :

    19-Mar-13 12:09:04

    Parmi toutes les possibilités offertes par Java, et dans lesquelles je m'y perds, comment calculer une durée entre deux dates de ce type ?

    Merci de votre aide.

    Pierre

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java / JEE
    Inscrit en
    Février 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java / JEE

    Informations forums :
    Inscription : Février 2008
    Messages : 185
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    J'aurais fait quelque chose de ce genre qui permet d'obtenir une différence en millisecondes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy HH:mm:ss");
     
    		Date date1 = sdf.parse("19-Mar-13 12:09:04");
    		Date date2 = sdf.parse("20-Mar-13 12:09:04");
     
    		System.out.println((date2.getTime() - date1.getTime()) + " ms");
    Mais après test, le "MMM" ne marche pas
    Peut-être que ça pourra te mettre sur la voie quand même.

    Mathieu

  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 090
    Points : 1 055
    Points
    1 055
    Par défaut
    merci "influenza" pour cette proposition.

    Effectivement, si la voie est bonne, il faut y apporter quelques aménagements. J'ai réussi à la mettre en œuvre en y apportant quelques modifications (suggérées par "eclipse"). Voici ce que cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy HH:mm:ss", Locale.US);
    java.util.Date date1 = null, date2 = null;
    try {
    	date1 = sdf.parse("19-Mar-13 12:09:04");
    	date2 = sdf.parse("20-Mar-13 13:19:04");
    } catch (ParseException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    }
    System.out.println((date2.getTime() - date1.getTime()) + " ms");
    Trois types de modifications :

    • ajouter la locale US,
    • passer du type Date au type java.util.Date
    • entourer tout cela par un try catch


    Merci encore.

    Cordialement.

    Pierre

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par ChPr Voir le message
    ajouter la locale US,
    Tout dépend d'ou vient la date....

    passer du type Date au type java.util.Date
    Parceque tu importes un autre type de "Date" ?
    Il n'y a guère que java.sql.Date (qui hérite de java.util.Date) qui puisse poser problème, mais à ne jamais utiliser hors du cadre d'une base de donnée.
    Donc un simple "import java.util.Date" en début du fichier, et on utilise "Date" directement sans préciser son "full-name".

    entourer tout cela par un try catch
    Certainement, mais pas comme cela...
    Que se passe-t-il si une exception a lieu ? une des dates (voir les deux) est nulle, et bim .... NullPointerException dans le date1.getTime() - date2.getTime().

    Ou c'est une fonction intermédiaire, dans ce cas, il faut lancer une autre exception (ou simplement laisser la fonction lancer "ParseException" si les dates viennent en paramètre).
    Ou c'est une fonction terminale (framework), dans ce cas, il faut s'arrêter, et signaler l'erreur à l'utilisateur.

  5. #5
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 090
    Points : 1 055
    Points
    1 055
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Tout dépend d'ou vient la date....
    Oui, j'utilise le format US pour mes fichiers PCX5. Mais je pense qu'il faut donner la locale, sinon le MMM n'est pas correctement pris en compte.

    Citation Envoyé par nicroman Voir le message
    ... Parce que tu importes un autre type de "Date" ? ...
    Non, mais c'est une proposition de Eclipse que j'ai choisie. Maintenant que tu le dis, Eclipse me proposait aussi d'importer "java.util.Date". Ce que j'ai fait maintenant et je n'ai donc plus à le déclarer dans le corps du programme

    Citation Envoyé par nicroman Voir le message
    ... Ou c'est une fonction intermédiaire, dans ce cas, il faut lancer une autre exception (ou simplement laisser la fonction lancer "ParseException" si les dates viennent en paramètre).
    Ou c'est une fonction terminale (framework), dans ce cas, il faut s'arrêter, et signaler l'erreur à l'utilisateur.
    C'est Eclipse qui m'a proposé d'entourer les dates d'un try catch, mais c'est moi qui ait mis les deux dates dans un seul et même try catch. Je suis un peu trop dans le "moins j'ai de lignes de code, mieux je me porte"

    Cordialement.

    Pierre

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Java / JEE
    Inscrit en
    Février 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java / JEE

    Informations forums :
    Inscription : Février 2008
    Messages : 185
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    Désolé pour cette réponse tardive.
    En fait je n'avais mis que le code minimal, te laissant le soin de gérer l'exception correctement en fonction du contexte. La date que j'avais utilisée était bien un java.util.Date. On se sert de celle du package sql que pour les bases de données.
    En fait mon problème venait surtout de la locale. J'avais essayé FR sans succès....
    Bref apparemment ça a été bénéfique quand même

    Mathieu

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/12/2006, 17h43
  2. [MySQL] Aide pour calculer une durée
    Par Sandara dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/06/2006, 17h00
  3. Calculer la duree d'un MP3
    Par k-koo dans le forum C
    Réponses: 4
    Dernier message: 16/03/2006, 21h01
  4. [Date] Fonction de calcul de durée entre 2 dates
    Par jesus144 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/01/2006, 16h36
  5. Calculer une duree entre 2 dates
    Par d.w.d dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 22h39

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