Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm ngày trong tuần từ ngày tháng năm trong JavaScript

Chúng ta cần viết hàm JavaScript nhận vào ba đối số: ngày, tháng và năm. Dựa trên ba đầu vào này, hàm tìm ngày trong tuần của ngày đó.

Ví dụ: Nếu đầu vào là:

day = 15, month = 8, year = 1993

Kết quả

Kết quả đầu ra:

const output = 'Sunday'

Ví dụ

Mã thực hiện:

const dayOfTheWeek = (day, month, year) => { 
  // JS months start at 0 
  return dayOfTheWeekJS(day, month - 1, year); 
} 
function dayOfTheWeekJS(day, month, year) { 
  const DAYS = [ 
    'Sunday', 
    'Monday', 
    'Tuesday', 
    'Wednesday', 
    'Thursday', 
    'Friday', 
    'Saturday', 
  ]; 
  const DAY_1970_01_01 = 4; 
  let days = day - 1; 
  while (month - 1 >= 0) { 
    days += daysInMonthJS(month - 1, year); 
    month -= 1; 
  } 
  while (year - 1 >= 1970) { 
    days += daysInYear(year - 1); 
    year -= 1; 
  } 
  return DAYS[(days + DAY_1970_01_01) % DAYS.length]; 
}; 
function daysInMonthJS(month, year) { 
  const days = [ 
    31, // January 
    28 + (isLeapYear(year) ? 1 : 0), // Feb, 
    31, // March 
    30, // April 
    31, // May 
    30, // June 
    31, // July 
    31, // August 
    30, // September 
    31, // October 
    30, // November 
    31, // December 
  ]; 
  return days[month]; 
} 
function daysInYear(year) { 
  return 365 + (isLeapYear(year) ? 1 : 0); 
} 
function isLeapYear(year) { 
  return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; 
} 
console.log(dayOfTheWeek(15, 8, 1993));

Giải thích

Chúng ta muốn đếm số ngày đến ngày cho trước. Bắt đầu từ thời gian Unix 0 (Thứ Năm 1970-01-01):

  • Đếm ngày trong các năm hoàn chỉnh
  • Đếm ngày trong tháng cho năm chưa hoàn chỉnh
  • Ngày còn lại cho tháng chưa hoàn chỉnh

Kết quả

Kết quả in ra console:

Sunday