Maison  >  Article  >  Java  >  Comment convertir des millisecondes au format \"hh:mm:ss\" ?

Comment convertir des millisecondes au format \"hh:mm:ss\" ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 03:51:021000parcourir

How to Convert Milliseconds to

Conversion des millisecondes au format "hh:mm:ss"

Vous pouvez rencontrer une situation dans laquelle vous devez convertir les millisecondes au format familier " hh:mm:ss", généralement utilisé pour représenter l'heure. Cela peut être une exigence courante dans les applications, telles que les comptes à rebours.

Comprendre le problème

Vous avez peut-être essayé d'utiliser le code suivant pour effectuer la conversion :

<code class="java">//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)));</code>

Cependant, ce code pourrait ne pas fonctionner comme prévu. Par exemple, pour une entrée de 3 600 000 ms (représentant 1 heure), vous obtenez « 01:59:00 » au lieu du « 01:00:00 » correct.

Identification du problème

En y regardant de plus près, le problème réside dans ce line :

<code class="java">TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))</code>

Ici, vous convertissez des heures en millisecondes en utilisant des minutes au lieu d'heures.

Corriger la logique

Le code correct devrait utilisez TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) à la place :

<code class="java">//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)));</code>

Ce changement garantit que la conversion de l'heure est effectuée correctement et vous obtiendrez le résultat souhaité de "01:00:00" pendant 3600000 ms.

Simplifié Version

Vous pouvez simplifier davantage le code en utilisant une division de module au lieu de soustraction :

<code class="java">String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),
    TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));</code>

Cette version reste efficace tout en fournissant les mêmes résultats précis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn