Jika saya memiliki dua tanggal, bagaimana saya bisa menggunakan JavaScript untuk mendapatkan perbedaan antara dua tanggal dalam hitungan menit?
Jika saya memiliki dua tanggal, bagaimana saya bisa menggunakan JavaScript untuk mendapatkan perbedaan antara dua tanggal dalam hitungan menit?
Jawaban:
Anda dapat memeriksa kode ini:
var today = new Date();
var Christmas = new Date("2012-12-25");
var diffMs = (Christmas - today); // milliseconds between now & Christmas
var diffDays = Math.floor(diffMs / 86400000); // days
var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)");
atau var diffMins = Math.floor((...
untuk membuang detik jika Anda tidak ingin membulatkan menit.
Math.round(((diffMs % 86400000) % 3600000) / 60000);
tidak bekerja ketika perbedaannya lebih besar dari 60 menit
Mengurangi 2 objek Date memberi Anda perbedaan dalam milidetik, misalnya:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.abs
digunakan untuk dapat menggunakan perbedaan absolut (sehingga new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')
memberikan hasil yang sama).
Membagi hasil dengan 1000 memberi Anda jumlah detik. Membagi dengan 60 memberi Anda jumlah menit. Untuk membulatkan ke seluruh menit, gunakan Math.floor
atau Math.ceil
:
var minutes = Math.floor((diff/1000)/60);
Dalam contoh ini hasilnya akan menjadi 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)
jika Anda memerlukan detik yang tersisa juga
new Date(string)
dengan format selain string format ISO-8601. Lihat Mengapa Date.parse memberikan hasil yang salah? , atau cukup gunakan angka (mis., new Date(2011, 9, 9, 12, 0, 0)
ingat bulan berdasarkan 0).
var startTime = new Date('2012/10/09 12:00');
var endTime = new Date('2013/10/09 12:00');
var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds
var resultInMinutes = Math.round(difference / 60000);
new Date(string)
dengan format selain string format ISO-8601. Lihat Mengapa Date.parse memberikan hasil yang salah? , atau cukup gunakan angka (mis., new Date(2011, 9, 9, 12, 0, 0)
ingat bulan berdasarkan 0).
Fungsi sederhana untuk melakukan perhitungan ini:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
Itu harus menunjukkan perbedaan antara dua tanggal dalam hitungan menit. Cobalah di browser Anda:
const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')
(currDate - oldDate) / 60000 // 64
(currDate.getTime() - oldDate.getTime()) / 60000
Bagi yang suka bekerja dengan angka kecil
const today = new Date();
const endDate = new Date(startDate.setDate(startDate.getDate() + 7));
const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24));
const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24);
const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60);
const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60);
Masalah ini diselesaikan dengan mudah dengan moment.js, seperti contoh ini:
var difference = mostDate.diff(minorDate, "minutes");
Parameter kedua dapat diubah untuk parameter lain, lihat dokumentasi moment.js.
mis: "hari", "jam", "menit", dll.
CDN untuk moment.js tersedia di sini:
https://cdnjs.com/libraries/moment.js
Terima kasih.
EDIT:
mostDate dan minorDate harus menjadi tipe momen.
Inilah beberapa kesenangan yang saya miliki dalam menyelesaikan sesuatu yang serupa di simpul.
function formatTimeDiff(date1, date2) {
return Array(3)
.fill([3600, date1.getTime() - date2.getTime()])
.map((v, i, a) => {
a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
}).join(':');
}
const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);
console.log(`Dates:
Start : ${utcStart}
Stop : ${utcEnd}
Elapsed : ${utcDiff}
`);
/*
Outputs:
Dates:
Start : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
Stop : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
Elapsed : 09:37:02
*/
Anda dapat melihatnya beraksi di https://repl.it/@GioCirque/TimeSpan-Formatting
Kode berikut ini berfungsi untuk saya,
function timeDiffCalc(dateNow,dateFuture) {
var newYear1 = new Date(dateNow);
var newYear2 = new Date(dateFuture);
var dif = (newYear2 - newYear1);
var dif = Math.round((dif/1000)/60);
console.log(dif);
}
Anda dapat melakukannya sebagai berikut:
difference of dates
(Perbedaan akan dalam milidetik)milliseconds
menjadi minutes
misms/1000/60
Kode:
let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");
let msDifference = dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);