Masalah:
Seorang pembangun yang bekerja dengan pemasa undur pertemuan kesukaran menukar milisaat kepada format "hh:mm:ss" yang dikehendaki. Percubaan awal mereka mengakibatkan paparan masa yang salah, terutamanya untuk nilai yang melebihi satu jam.
Penyelesaian:
Isu utama berpunca daripada kecacatan logik dalam menukar jam kepada milisaat menggunakan minit dan bukannya jam. Khususnya, kod itu digunakan:
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
sementara ia sepatutnya:
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
Demonstrasi Kod:
Berikut ialah coretan kod yang disemak yang memformat milisaat dengan betul kepada "hh:mm:ss":
String hms = 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)));
Kes Ujian:
long millis = 3600000; String hms = ... // Replace with revised code from above System.out.println(hms); // Expected output: 01:00:00
Selain itu, kod boleh dioptimumkan menggunakan pembahagian modulus bukannya penolakan:
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));
Kedua-dua variasi mencapai pemformatan "hh:mm:ss" yang betul dan memanfaatkan TimeUnit API untuk mengendalikan penukaran dengan lancar.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Millisaat kepada Format \"hh:mm:ss\" dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!