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 :

Durée d'un traitement


Sujet :

Langage Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 90
    Points : 66
    Points
    66
    Par défaut Durée d'un traitement
    Bonjour à tous,

    une question simple, mais à laquelle je ne trouve pas de solution satisfaisante....

    Soit un traitement batch qui va faire persister en base ses date de début dDebut et date de fin dFin. Les objets manipulés sont des java.util.Date.

    Mon but est d'afficher de manière simple la durée du traitement, et donc d'obtenir la différence entre les 2 date au format heures, minutes, secondes (pas besoin d'aller au-delà).

    J'ai cherché dans la doc de JM Doudoux, mais n'ai pas trouvé de "bonne solution", même avec JodaTime.

    Qu'utiliseriez-vous pour faire cela?

    Je vous remercie, et bonne journée.
    Thomas

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Utiliser Date ou Joda pose parfois des surprises qu'il faut gérer à cause du changement d'heure 2 fois par an.

    Pour ton problème tout simple, tu peux utiliser la bonne vieille décomposition :
    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
            long uneSeconde = 1000;
            long uneMinute = 60 * uneSeconde;
            long uneHeure = 60 * uneMinute;
            long reste;
     
            long millis = dFin.getTime() - dDebut .getTime();
     
            long heures = millis / uneHeure;
            reste = millis % uneHeure;
     
            long minutes = reste / uneMinute;
            reste = reste % uneMinute;
     
            long secondes = reste / uneSeconde;
     
            DecimalFormat df = new DecimalFormat("00");
            System.out.println(df.format(heures) + ":" + df.format(minutes) + ":" + df.format(secondes));
    Et ça marche au delà de 24 h
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 90
    Points : 66
    Points
    66
    Par défaut
    Un grand merci.... )) Je pensais utiliser des choses existantes et n'ai même pas songé à décomposer simplement mon problème.....
    Les affres de Java )

    Merci encore!
    Thomas

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Citation Envoyé par Wise_Sherkaan Voir le message

    Mon but est d'afficher de manière simple la durée du traitement, et donc d'obtenir la différence entre les 2 date au format heures, minutes, secondes (pas besoin d'aller au-delà).
    Avec Duration.between() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Instant instantd = Instant.now();
     
    traitement();
     
    Instant instantf =  Instant.now();  //  Instant instantf = instantd.plus(Duration.ofHours(15).plusMinutes(4).plusSeconds(8));  pour simuler le temps de traitement de 15 h 4 mn et 8 s
     
    Duration duree = Duration.between(instantf, instantd);
     
    System.out.println(duree);
    donne:

    PT-15H-4M-8S



    Pour convertir des Date en Instant, la classe Date a la méthode: toInstant()

Discussions similaires

  1. [SSAS][2k5] - Traitement des durées
    Par lea-akasha dans le forum SSAS
    Réponses: 3
    Dernier message: 27/08/2008, 18h57
  2. [PHPMailer] Problème de durée de traitement
    Par arno_ dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/04/2007, 16h53
  3. Réponses: 3
    Dernier message: 28/02/2007, 18h46
  4. mesurer la durée d'un traitement
    Par ljoly dans le forum Oracle
    Réponses: 7
    Dernier message: 30/08/2006, 11h49
  5. Durée d'un traitement temps réel
    Par Almex dans le forum C
    Réponses: 5
    Dernier message: 29/03/2003, 14h15

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