Rumah > Java > javaTutorial > Bagaimana untuk Menukar Millisaat kepada Format \'hh:mm:ss\'?

Bagaimana untuk Menukar Millisaat kepada Format \'hh:mm:ss\'?

Linda Hamilton
Lepaskan: 2024-11-02 03:51:02
asal
1170 orang telah melayarinya

How to Convert Milliseconds to

Menukar Milisaat kepada Format "hh:mm:ss"

Anda mungkin menghadapi situasi di mana anda perlu menukar milisaat kepada yang biasa " hh:mm:ss", biasanya digunakan untuk mewakili masa. Ini boleh menjadi keperluan biasa dalam aplikasi, seperti pemasa undur.

Memahami Masalah

Anda mungkin telah mencuba menggunakan kod berikut untuk melakukan penukaran:

<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>
Salin selepas log masuk

Walau bagaimanapun, kod ini mungkin tidak berfungsi seperti yang diharapkan. Sebagai contoh, untuk input 3600000ms (mewakili 1 jam), anda mendapat "01:59:00" dan bukannya "01:00:00" yang betul.

Mengenal pasti Isu

Setelah diperiksa dengan lebih teliti, isunya terletak pada baris ini:

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

Di sini, anda menukar jam kepada milisaat menggunakan minit dan bukannya jam.

Membetulkan Logik

Kod yang betul harus menggunakan TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) sebaliknya:

<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>
Salin selepas log masuk

Perubahan ini memastikan penukaran masa adalah dilakukan dengan betul, dan anda akan mendapat hasil yang diingini iaitu "01:00:00" untuk 3600000ms.

Versi Ringkas

Anda boleh memudahkan lagi kod dengan menggunakan pembahagian modulus dan bukannya penolakan:

<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>
Salin selepas log masuk

Versi ini kekal cekap sambil memberikan keputusan tepat yang sama.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Millisaat kepada Format \'hh:mm:ss\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan