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

sumber:php.cn
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