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:021094parcourir

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 cette ligne :

<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.

Correction la logique

Le code correct doit utiliser 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 fait correctement, et vous obtiendrez le résultat souhaité de "01:00:00" pendant 3600000ms.

Version simplifiée

Vous pouvez simplifier davantage le code en utilisant un 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