Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Waktu Tarikh menggunakan moment.js?

Bagaimana untuk Mengira Perbezaan Masa Dengan Tepat Antara Dua Waktu Tarikh menggunakan moment.js?

DDD
DDDasal
2024-11-17 11:39:01391semak imbas

How to Accurately Calculate the Time Difference Between Two Datetimes using moment.js?

Dapatkan Perbezaan Masa Antara Masa Tarikh

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.

Pernyataan Masalah

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"

Percubaan dan Isu Awal

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.

Penyelesaian Betul

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.

Pendekatan Alternatif: format-durasi-momen

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!

Kenyataan:
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