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 :

Mise en forme du temps


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut Mise en forme du temps
    Bonjour à tous,

    Dans un programme je commence par récupérer le temps courant à l'aide de long debut=System.currentTimeMillis()
    Je fais pareil à la fin du programme(fin=...) puis je soustrait fin à début pour avoir le temps écoulé pour executer le programme.

    Cependant le résultat est en millisecondes et je souhaiterais savoir si il y a une classe pour mettre en forme ce résultat, au choix hh:mm:ss ou seulement mm:ss etc...

    D'avance merci!

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    Salut,

    La classe Time comporte un constructeur qui prend des milisecondes en parametre.

    Jett-y un oeil.

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    Je ne crois pas que cette classe répond à mon problème. Elle traite les date et non les durées apparement.

    Autre idée?

    J'ai bien vu une classe Duration mais il ne semble pas avoir de manière de formater la sortie.

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    SimpleDateFormat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
    long dureeMs = 264875L;
    Date duree = new Date(dureeMs);
    String dureeFormatee = df.format(duree);
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Regarde le constructeur de la classe Date. Ca prend un long en paramètre. Il y'a aussi la classe DateFormat et SimpleDateFormat.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Attention : vous confondez les notions de dates et/ou heures avec la notion de durée... Or ce n'est pas la même chose !!!

    Une date/heure est assez complexe et sa représentation peut énormément dépendre du contexte. D'ailleurs avec vos solutions j'obtiens 2h00 pour la valeur 3600000ms qui représente pourtant 1H !
    Tout ceci à cause du TimeZone de ma machine qui est utilisé par défaut...

    De plus l'arithmétique sur des dates/heures est différentes que sur la notion de durée.

    On pourrait forcer le TimeZone mais ce ne serait pas forcément une solution propre...



    Malheureusement il n'y a pas de notion de durée dans l'API standard, donc je vois principalement deux solutions :
    • Soit tu utilises une API externes qui gérerait cela proprement, et Joda-Time me semble tout indiqué (a noter que cette API sert de base pour la nouvelle API de Date qui devrait être intégrer dans Java 7).
    • Soit tu te codes un objets représentant une durée (ou une méthode formatant ta durée), ce qui n'est pas si complexe :
      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
      18
      19
      20
      21
      22
      class Duration {
       
      	private final long duration;
       
      	public Duration(long duration) {
      		this.duration = duration;
      	}
       
      	@Override
      	public String toString() {
      		long millis = this.duration;
      		long seconds = millis/1000;
      		millis -= seconds*1000;
      		long minutes = seconds/60;
      		seconds -= minutes*60;
      		long hours = minutes/60;
      		minutes -= hours*60;
       
      		return String.format("%02d:%02d:%02d.%03d",
      				hours, minutes, seconds, millis);
      	}
      }



    a++

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,
    Attention : vous confondez les notions de dates et/ou heures avec la notion de durée... Or ce n'est pas la même chose !!!
    a++
    Salut,

    Tu as bien compris ma problématique
    Effectivement il n'est pas difficile de coder cette classe, mais je me demandais si il n'existait pas déjà quelque chose dans Java, histoire de pas réinventer la roue et d'utiliser une classe surement plus optimisée que la mienne. Merci aussi pour la piste de cette autre librairie je vais y jeter un oeil


Discussions similaires

  1. [PR-2013] Mise en forme de l'échelle des temps
    Par Potzo dans le forum Project
    Réponses: 1
    Dernier message: 07/05/2015, 16h23
  2. temps de réponse pour mise en forme graphe
    Par lalmimaj dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/12/2012, 17h05
  3. mise en forme rapide d'applets
    Par appletj dans le forum Applets
    Réponses: 11
    Dernier message: 03/06/2004, 13h28
  4. Mise en forme HTML
    Par Regis.C dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 25/04/2004, 11h55
  5. Mise en forme fichier avant Import
    Par jeff37 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2004, 15h16

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