Mengukur Masa Berlalu di Jawa
Soalan:
Bagaimanakah saya boleh menentukan tempoh antara dua titik masa di Jawa? Secara khusus, saya ingin mewakili startTime dan endTime sebagai pembolehubah contoh dalam kelas dan mengira perbezaannya dalam kaedah getDuration(). Walau bagaimanapun, terdapat kekangan: Saya perlu mengendalikan kes di mana StartTime lewat daripada endTime dan masih mendapat hasil yang tepat (cth., StartTime = 23:00, endTime = 1:00, duration = 2:00).
Jawapan:
Untuk mencapai ukuran masa yang tepat dalam Java, anda mesti menggunakan System.nanoTime(). Bertentangan dengan System.currentTimeMillis(), nanoTime direka khusus untuk mengukur masa berlalu.
Penjelasan:
System.currentTimeMillis() menyediakan dinding -masa jam, yang terdedah kepada pelarasan dan pembetulan oleh sistem. Ini membawa kepada ketidakkonsistenan semasa mengukur masa berlalu. Sebaliknya, System.nanoTime() tidak terjejas oleh pembetulan ini dan menawarkan pengukuran yang tepat bagi perbezaan masa, walaupun startTime melebihi endTime.
Untuk melaksanakan ini dalam kelas anda:
public class Stream { private long startTime; private long endTime; public long getDuration() { return endTime - startTime; } // ... }
Dengan menggunakan System.nanoTime(), anda boleh mendapatkan pengiraan tempoh masa yang tepat, walaupun semasa mengendalikan selang masa merentas tengah malam atau dengan masa mula berlaku selepas masa tamat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengukur Tempoh Antara Dua Titik Masa dengan Tepat di Java, Walaupun Masa Mula adalah Selepas Masa Tamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!