[javascript] 특정 주차의 시작일과 종료일 계산하기

원하는 주차의 시작일과 종료일을 자바스크립트로 계산하는 방법을 살펴보겠습니다.

문제 정의

특정 연도와 주차 번호를 받아 해당 주의 시작일(월요일)과 종료일(일요일)을 계산하는 문제입니다.

해결 방법

  1. 먼저, 주어진 연도와 주차 번호를 기반으로 시작일과 종료일을 계산합니다.
  2. 해당 연도의 1월 1일이 무슨 요일인지 확인합니다.
  3. 주어진 주차 번호에 따라 시작일과 종료일을 계산합니다.
  4. 계산된 시작일과 종료일을 반환합니다.

아래는 이를 수행하는 getWeekStartAndEndDates 함수의 예시 코드입니다.

function getWeekStartAndEndDates(year, weekNumber) {
  var startDate = new Date(year, 0, (weekNumber - 1) * 7 + 1);
  var endDate = new Date(year, 0, weekNumber * 7);

  var day = startDate.getDay();
  var diff = startDate.getDate() - day + (day == 0 ? -6 : 1);

  startDate = new Date(startDate.setDate(diff));
  endDate = new Date(endDate.setDate(diff + 6));

  return {
    start: startDate,
    end: endDate
  };
}

var year = 2022;
var weekNumber = 7;
var dates = getWeekStartAndEndDates(year, weekNumber);
console.log('주차 시작일:', dates.start.toDateString());  // 주차 시작일: Mon Feb 07 2022
console.log('주차 종료일:', dates.end.toDateString());  // 주차 종료일: Sun Feb 13 2022

위 코드는 getWeekStartAndEndDates 함수를 사용하여 주어진 연도와 주차 번호에 해당하는 주의 시작일과 종료일을 계산하고 반환합니다.

이렇게 함으로써 자바스크립트를 활용하여 특정 주차의 시작일과 종료일을 간단히 계산할 수 있습니다.

참고 자료