Maison > Java > javaDidacticiel > Comment convertir des millisecondes au format \'hh:mm:ss\' ?

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

Linda Hamilton
Libérer: 2024-11-02 03:51:02
original
1119 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal