首頁  >  文章  >  Java  >  如何將毫秒轉換為“hh:mm:ss”格式?

如何將毫秒轉換為“hh:mm:ss”格式?

Linda Hamilton
Linda Hamilton原創
2024-11-02 03:51:021000瀏覽

How to Convert Milliseconds to

將毫秒轉換為「hh:mm:ss」格式

您可能會遇到需要將毫秒轉換為熟悉的「 hh :mm:ss」格式,通常用於表示時間。這可能是應用程式中的常見要求,例如倒數計時器。

理解問題

您可能已嘗試使用以下程式碼來執行轉換:

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

但是,此程式碼可能無法如預期運作。例如,對於 3600000 毫秒(代表 1 小時)的輸入,您會得到“01:59:00”,而不是正確的“01:00:00”。

識別問題

經過仔細檢查,問題出在這一行:

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

這裡,您使用分鐘而不是小時將小時轉換為毫秒。

更正邏輯

正確的程式碼應該使用TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) 取代:

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

此變更可確保時間轉換為正確完成後,您將在3600000 毫秒內獲得所需的「01:00:00」結果。

簡化版本

您可以透過使用進一步簡化程式碼模除法而不是減法:
<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>

此版本在提供相同準確結果的同時保持高效。

以上是如何將毫秒轉換為“hh:mm:ss”格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn