Menentukan perbezaan masa antara dua tarikh tertentu adalah keperluan biasa dalam banyak aplikasi. Artikel ini menyediakan panduan komprehensif untuk mendapatkan selang masa yang tepat menggunakan moment.js, menangani isu yang berpotensi dan menawarkan pendekatan alternatif.
Memandangkan dua tarikh yang diwakili sebagai rentetan, matlamatnya adalah untuk kira perbezaan masa dan paparkannya dalam format HH:MM:SS. Contohnya:
var now = "04/09/2013 15:00:00"; var then = "04/09/2013 14:20:30"; //expected result: "00:39:30"
Menggunakan fungsi diff moment.js, anda boleh mencuba yang 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, pendekatan ini tersalah menambah 10 jam, walaupun nilai dalaman tempoh adalah tepat.
Untuk menyelesaikan isu ini, terdapat dua pilihan:
Pilihan 1 (untuk tempoh kurang daripada 24 jam):
moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")
Pendekatan ini menukarkan perbezaan masa kepada UTC, menghapuskan sebarang ketidakkonsistenan masa penjimatan siang.
Pilihan 2 (untuk tempoh masa 24 jam atau lebih):
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");
Pendekatan ini mengira perbezaan masa dalam milisaat, menukarkannya kepada objek tempoh dan mengekstrak jam, minit dan saat secara berasingan.
Bagi mereka yang mencari penyelesaian yang mudah untuk memformat objek tempoh, pemalam pihak ketiga yang dipanggil format-durasi-momen boleh digunakan:
var s = d.format("hh:mm:ss");
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Waktu Tarikh menggunakan moment.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!