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
Lepaskan: 2024-11-17 11:39:01
asal
377 orang telah melayarinya

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"
Salin selepas log masuk

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
Salin selepas log masuk

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")
Salin selepas log masuk

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");
Salin selepas log masuk

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");
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan