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 :
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);
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
Exemple :
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
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
5
 
String msStr = String.valueOf(ms);
 if(msStr.length() > 2){
	  msStr = msStr.substring(0, 2);
}
Est-ce la solution la plus propre ?
Sinon, Comment faire ?