[javascript] 특정 월에 특정 요일이 몇 번 나오는지 계산하기

우리의 목표는 주어진 월과 요일에 따라 몇 번의 해당 요일이 있는지 계산하는 것입니다. 이를 위해서는 다음과 같은 스텝이 필요합니다.

  1. 주어진 월의 첫째날을 기준으로 해당 월의 모든 날짜를 생성합니다.
  2. 각 날짜의 요일을 확인하여 원하는 요일과 일치하는 횟수를 셉니다.
  3. 최종적으로 계산된 횟수를 반환합니다.
function countDayInMonth(year, month, dayOfWeek) {
  let count = 0;
  for (let i = 1; i <= new Date(year, month, 0).getDate(); i++) {
    if (new Date(year, month - 1, i).getDay() === dayOfWeek) {
      count++;
    }
  }
  return count;
}

// 예시: 2022년 7월에 목요일이 몇 번 등장하는지 계산
const year = 2022;
const month = 7;
const dayOfWeek = 4; // 0부터 시작하여 0은 일요일, 1은 월요일, ... 6은 토요일

const result = countDayInMonth(year, month, dayOfWeek);
console.log(`2022년 7월에 목요일은 총 ${result}번 등장합니다.`);

이렇게 함으로써 우리는 특정 월에 특정 요일이 몇 번 등장하는지 계산할 수 있습니다. 가능한 요일 값은 0부터 6까지의 숫자입니다 (0은 일요일, 1은 월요일, … 6은 토요일).

이 예제는 자바스크립트의 내장 Date 객체를 사용하여 구현되었습니다. 이외에도 Moment.js나 dayjs와 같은 라이브러리를 사용하여 보다 간편하게 날짜와 요일을 다룰 수도 있습니다.

[참고 자료]