Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาจำนวนวันระหว่างสองวันที่ใน JavaScript

เราต้องเขียนฟังก์ชันที่รับสองวันที่ในรูปแบบ 'YYYY-MM-DD' และคืนจำนวนวันที่ต่างกันระหว่างสองวันนั้น

ตัวอย่าง: '2020-05-21' และ '2020-05-25' ผลลัพธ์คือ 4 วัน

ตัวอย่างโค้ด

const str1 = '2020-05-21';
const str2 = '2020-05-25';

const daysBetweenDates = (str1, str2) => {
  const leapYears = (year, month) => {
    if (month <= 2) { --year; }
    let floor = Math.floor;
    return floor(year / 400) + floor(year / 4) - floor(year / 100);
  };
  let monthDays = [0, 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30];
  for (let i = 1; i < monthDays.length; ++i) {
    monthDays[i] += monthDays[i - 1];
  }
  let days = (year, month, d) => (year * 365) + leapYears(year, month) + monthDays[month] + d;
  let p = days(...str1.split('-').map(Number));
  let q = days(...str2.split('-').map(Number));
  return Math.abs(p - q);
};

console.log(daysBetweenDates(str1, str2));

ผลลัพธ์

ค่าที่แสดงในคอนโซลจะเป็นดังนี้:

4