Menentukan perbezaan masa antara dua kejadian ialah tugas asas dalam pelbagai senario pengaturcaraan. Artikel ini membincangkan cara mengira perbezaan ini dengan berkesan menggunakan contoh khusus.
Pertimbangkan keperluan berikut:
var now = "04/09/2013 15:00:00"; var then = "04/09/2013 14:20:30"; //expected result: "00:39:30"
Pada mulanya, anda boleh mencuba pendekatan berikut:
var now = moment("04/09/2013 15:00:00"); var then = moment("04/09/2013 14:20:30"); console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss")) // outputs 10:39:30
Walau bagaimanapun, dalam contoh ini, nilai yang tidak dijangka "10" muncul dalam hasilnya. Ini kerana moment.duration menukarkan perbezaan antara sekarang dan kemudian kepada objek yang mengandungi nilai dalaman seperti milisaat. Untuk menukar tempoh ini kepada selang masa, anda boleh menggunakan:
duration.get("hours") + ":" + duration.get("minutes") + ":" + duration.get("seconds")
Ini akan menghasilkan hasil yang diingini: "00:39:30."
Nota: Pendekatan ini hanya sesuai untuk tempoh kurang daripada 24 jam. Untuk tempoh yang lebih besar, anda memerlukan pendekatan yang berbeza.
var now = "04/09/2013 15:00:00"; var then = "02/09/2013 14:20:30"; var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss")); var d = moment.duration(ms); var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss"); // outputs: "48:39:30"
Dalam kes ini, kami mengira perbezaan masa sebagai milisaat, menukarkannya kepada objek tempoh d, dan kemudian memformatkannya menggunakan masa UTC. Ini memberikan kita hasil yang betul, "48:39:30."
Sebagai alternatif, anda boleh menggunakan pemalam format jangka masa untuk memudahkan proses pemformatan.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Masa dengan Tepat Antara Dua Masa dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!