หากฉันมีสองวันฉันจะใช้JavaScriptเพื่อรับความแตกต่างระหว่างสองวันในไม่กี่นาทีได้อย่างไร
หากฉันมีสองวันฉันจะใช้JavaScriptเพื่อรับความแตกต่างระหว่างสองวันในไม่กี่นาทีได้อย่างไร
คำตอบ:
คุณสามารถชำระเงินรหัสนี้:
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 =)");
หรือvar diffMins = Math.floor((...
ทิ้งวินาทีหากคุณไม่ต้องการปัดเศษนาที
Math.round(((diffMs % 86400000) % 3600000) / 60000);
ไม่ทำงานเมื่อความแตกต่างมากกว่า 60 นาที
การลบวัตถุ 2 วันจะให้ความแตกต่างเป็นมิลลิวินาทีเช่น:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.abs
ใช้เพื่อให้สามารถใช้ความแตกต่างที่แน่นอน (ดังนั้นnew Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')
ให้ผลลัพธ์เดียวกัน)
การหารผลลัพธ์ด้วย 1,000 ให้จำนวนวินาที การหารด้วย 60 จะให้จำนวนนาที ในการปัดเศษเป็นนาทีทั้งหมดให้ใช้Math.floor
หรือMath.ceil
:
var minutes = Math.floor((diff/1000)/60);
ในตัวอย่างนี้ผลลัพธ์จะเป็น 720
(Math.floor(seconds/60))+':'+((seconds/60)%60)
ถ้าคุณต้องการวินาทีที่เหลือเช่นกัน
new Date(string)
กับรูปแบบอื่นนอกเหนือจากสตริงรูปแบบ ISO-8601 ดูเหตุใด Date.parse ให้ผลลัพธ์ที่ไม่ถูกต้อง หรือเพียงแค่ใช้ตัวเลข (เช่นnew Date(2011, 9, 9, 12, 0, 0)
เพียงจำเดือนเป็น 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)
กับรูปแบบอื่นนอกเหนือจากสตริงรูปแบบ ISO-8601 ดูเหตุใด Date.parse ให้ผลลัพธ์ที่ไม่ถูกต้อง หรือเพียงแค่ใช้ตัวเลข (เช่นnew Date(2011, 9, 9, 12, 0, 0)
เพียงจำเดือนเป็น 0)
ฟังก์ชั่นง่าย ๆ ในการคำนวณนี้:
function getMinutesBetweenDates(startDate, endDate) {
var diff = endDate.getTime() - startDate.getTime();
return (diff / 60000);
}
นั่นควรจะแสดงความแตกต่างระหว่างสองวันในไม่กี่นาที ลองใช้ในเบราว์เซอร์ของคุณ:
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
สำหรับคนที่ชอบทำงานกับคนจำนวนน้อย
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);
ปัญหานี้แก้ไขได้อย่างง่ายดายด้วย moment.js เช่นตัวอย่างนี้:
var difference = mostDate.diff(minorDate, "minutes");
พารามิเตอร์ที่สองสามารถเปลี่ยนแปลงได้สำหรับพารามิเตอร์อื่น ๆ ดูเอกสาร moment.js
เช่น: "วัน", "ชั่วโมง", "นาที" ฯลฯ
CDN สำหรับ moment.js มีให้ที่นี่:
https://cdnjs.com/libraries/moment.js
ขอบคุณ
แก้ไข:
ส่วนใหญ่วันที่และวันรองลงมาควรเป็นประเภทช่วงเวลา
นี่คือความสนุกที่ฉันได้แก้บางอย่างที่คล้ายกันในโหนด
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
*/
คุณสามารถดูการทำงานได้ที่https://repl.it/@GioCirque/TimeSpan-Formatting
รหัสต่อไปนี้ทำงานให้ฉัน
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);
}
คุณสามารถทำได้ดังนี้:
difference of dates
(ความแตกต่างจะเป็นมิลลิวินาที)milliseconds
เข้ามาminutes
คือms/1000/60
รหัส:
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);