Bonjour,
J'essaye de calculer un time à partir d'une durée.
Le time doit respecter le format suivant : hh:mm:ss:ff
Voilà ce que j'ai fait :
Mon problème est que pour certaines durées là où les millisecondes tiennent sur 3 caractères , j'ai un time de la forme hh:mm:ss:fff
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 final long hr = TimeUnit.MILLISECONDS.toHours(halfDurationMs); final long min = TimeUnit.MILLISECONDS.toMinutes(halfDurationMs - TimeUnit.HOURS.toMillis(hr)); final long sec = TimeUnit.MILLISECONDS.toSeconds(halfDurationMs - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min)); final long ms = TimeUnit.MILLISECONDS.toMillis(halfDurationMs - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min) - TimeUnit.SECONDS.toMillis(sec)); String time = String.format("%02d:%02d:%02d:%02d", hr, min, sec, ms);
Exemple :
J'ai pensé à ajouter un contrôle sur les millisecondes, du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Pour la durée : 00:34:03 Le time calculé est : 00:17:01:500 Le time attendu est : 00:17:01:50
Est-ce la solution la plus propre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 String msStr = String.valueOf(ms); if(msStr.length() > 2){ msStr = msStr.substring(0, 2); }
Sinon, Comment faire ?
Partager