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

avec Java Discussion :

conversion d'une chaine H:MM:SS en un temps?


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut conversion d'une chaine H:MM:SS en un temps?
    Bonjour,
    j'ai actuellement une interface dans laquelle l'utilisateur entre un time-out sous la forme (H)H:MM:SS. Mais pour pouvoir l'utiliser j'ai besoin de le récupérer sous forme d'un nombre de (milli)secondes. Est-ce qu'il existe un utilitaire quelque part dans Java qui ferait cela ou dois-je m'écrire un parser de la chaine pour faire le calcul?

    Merci d'avance de vos réponses.

  2. #2
    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
    Tu peux utiliser SimpleDateFormat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public static void main(String[] args) throws IOException, ParseException {
    		SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
    		format.setTimeZone(TimeZone.getTimeZone("GMT"));
    		String heure = "00:05:10";
    		System.out.printf ("%s est %d millisecondes\n",heure,format.parse(heure).getTime());
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    00:05:10 est 310000 millisecondes

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut
    Ca marche. Merci beaucoup. J'avais cherché dans cette direction mais sans trouvé le truc.

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Attention tout de même au SimpleDateFormat qui traite des dates et non pas des durées. En utilisant le timezone GMT on peut "simuler" cela mais ce n'est pas l'objectif réel de cette classe.

    Surtout qu'un parse manuel n'est pas bien méchant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	public static long parse(String duration) throws IllegalArgumentException, NumberFormatException {
    		String[] v = duration.split(":");
    		if (v.length!=3)
    			throw new IllegalArgumentException("duration");
    		return Long.parseLong(v[2]) +	// secondes
    			(Long.parseLong(v[1]) * 60) + // minutes 
    			(Long.parseLong(v[0]) * 60 * 60); // heures
    	}

    a++

  5. #5
    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
    adiguba: je vois pas où est le problème. Date est officiellement documenté comem étant le nombre de milli seconde depuis le 1er janvier 1970 minuit. Un parsing n'ayant pas la section "date" présent met cette valeur au premier janvier 1970. La solution est donc robuste, claire et c'est pas une bidouille quelconque, c'est le résultat attendu d'une méthode utilisée telle qu'elle est documentée et doit être utilisée.

    Même l'api encourage ce genre d'utilisation puisqu'elle fournis une méthode DateFormat.getTimeInstance() qui ne gère que la partie "heure".

    Enfin, le code d'un parse manuel est beuacoup moins aisément lisible que l'utilisation d'un DateFormat.

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Malheureusement l'API des dates de Java n'est pas un modèle du genre...

    Un temps (ou une durée) c'est différent d'une date.
    Des APIs plus élaborées comme Joda Time ou la JSR-310 distinguent bien ces concepts.

    Après ca marche avec un DateFormat en GMT, je n'ai pas dit le contraire... mais je pense que ce n'est pas forcément le meilleur choix.


    a++

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

Discussions similaires

  1. [VBA Excel] conversion d'une chaine en numérique
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2005, 17h56
  2. [VBA][EXCEL]Conversion d'une chaine en single
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2005, 17h28
  3. conversion d'une chaine de caractère en int
    Par greg13 dans le forum C++
    Réponses: 3
    Dernier message: 25/08/2005, 16h18
  4. [string->HTML] Conversion d'une chaine en HTML
    Par salome dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 24/07/2005, 16h27
  5. Conversion d'une chaine de char en numerique
    Par simone.51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/03/2004, 16h47

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