Je suis confus. Après être tombé sur este j'ai essayé de comprendre comment formater un compte à rebours au format suivant hh:mm:ss
.
Voici ma tentative -
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
Ainsi, lorsque j'essaie une valeur comme 3600000ms
j'obtiens 01:59:00
ce qui est erroné puisque ce devrait être 01:00:00
. Il y a manifestement quelque chose qui cloche dans ma logique, mais pour l'instant, je ne vois pas ce que c'est !
Quelqu'un peut-il m'aider ?
Editer -
C'est réparé. Voici la bonne façon de formater les millisecondes en hh:mm:ss
format -
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
Le problème était le suivant TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Ça aurait dû être ça TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
à la place.
1 votes
3 600 000 millisecondes représentent 3 600 secondes, ou 60 minutes, ou 1 heure. Cela ne devrait pas être
00:59:59
il devrait l'être01:00:00
.