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

แปลงวันเป็น ปี เดือน สัปดาห์ วัน - JavaScript

แปลงจำนวนวันทั้งหมดเป็นออบเจกต์ที่มี years, months, weeks, days โดยไม่นับปีอธิกสุรทิน (ปีละ 365 วัน เดือนละ 30 วัน)

ตัวอย่าง

738 days → { years: 2, months: 0, weeks: 1, days: 1 }

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

const days = 738;

const calculateTiming = d => {
  let years = 0, months = 0, weeks = 0, days = 0;
  
  while (d > 0) {
    if (d >= 365) { years++; d -= 365; }
    else if (d >= 30) { months++; d -= 30; }
    else if (d >= 7) { weeks++; d -= 7; }
    else { days++; d--; }
  }
  
  return { years, months, weeks, days };
};

console.log(calculateTiming(days));

ผลลัพธ์

{ years: 2, months: 0, weeks: 1, days: 1 }

วิธีแบบคณิตศาสตร์ (เร็วกว่า ไม่ต้องลูป)

const calculateTiming = d => {
  const years = Math.floor(d / 365);
  d %= 365;
  const months = Math.floor(d / 30);
  d %= 30;
  const weeks = Math.floor(d / 7);
  const days = d % 7;
  return { years, months, weeks, days };
};

ใช้ Math.floor และ % (modulo) คำนวณได้ทันที O(1)