[Java][String] format %02d - Résultat
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:
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:
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:
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 ?