Nếu tôi có hai ngày, làm cách nào tôi có thể sử dụng JavaScript để có sự khác biệt giữa hai ngày tính bằng phút?
Nếu tôi có hai ngày, làm cách nào tôi có thể sử dụng JavaScript để có sự khác biệt giữa hai ngày tính bằng phút?
Câu trả lời:
Bạn có thể kiểm tra mã này:
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 =)");
hoặc var diffMins = Math.floor((...
loại bỏ giây nếu bạn không muốn làm tròn số phút.
Math.round(((diffMs % 86400000) % 3600000) / 60000);
không hoạt động khi chênh lệch lớn hơn 60 phút
Trừ 2 đối tượng Ngày cung cấp cho bạn sự khác biệt tính bằng mili giây, ví dụ:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.abs
được sử dụng để có thể sử dụng sự khác biệt tuyệt đối (do đó new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')
cho kết quả tương tự).
Chia kết quả cho 1000 sẽ cho bạn số giây. Chia cho 60 cho bạn số phút. Để làm tròn đến toàn bộ phút, sử dụng Math.floor
hoặc Math.ceil
:
var minutes = Math.floor((diff/1000)/60);
Trong ví dụ này, kết quả sẽ là 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)
nếu bạn cũng cần những giây còn lại
new Date(string)
với định dạng khác với chuỗi định dạng ISO-8601. Xem tại sao Date.parse cho kết quả không chính xác? hoặc chỉ sử dụng số (ví dụ: new Date(2011, 9, 9, 12, 0, 0)
chỉ cần nhớ tháng là 0 dựa).
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)
với định dạng khác với chuỗi định dạng ISO-8601. Xem tại sao Date.parse cho kết quả không chính xác? hoặc chỉ sử dụng số (ví dụ: new Date(2011, 9, 9, 12, 0, 0)
chỉ cần nhớ tháng là 0 dựa).
Một hàm đơn giản để thực hiện phép tính này:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
Điều đó sẽ cho thấy sự khác biệt giữa hai ngày trong vài phút. Hãy thử nó trong trình duyệt của bạn:
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
Dành cho những người thích làm việc với số lượng nhỏ
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);
Vấn đề này được giải quyết dễ dàng với khoảnh khắc.js, như ví dụ này:
var difference = mostDate.diff(minorDate, "minutes");
Tham số thứ hai có thể được thay đổi cho các tham số khác, xem tài liệu về khoảnh khắc.
ví dụ: "ngày", "giờ", "phút", v.v.
CDN cho khoảnh khắc.js có sẵn ở đây:
https://cdnjs.com/lologists/moment.js
Cảm ơn.
BIÊN TẬP:
mostDate và juniorDate nên là một loại thời điểm.
Đây là một số niềm vui tôi đã giải quyết một cái gì đó tương tự trong nút.
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
*/
Bạn có thể thấy nó hoạt động tại https://repl.it/@GioCirque/TimeSpan-Formatted
Các mã sau đây làm việc cho tôi,
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);
}
Bạn có thể làm như sau:
difference of dates
(Sự khác biệt sẽ được tính bằng mili giây)milliseconds
thành minutes
tức làms/1000/60
Mật mã:
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);