코드
const getWeek = (date) => {
const currentDate = date.getDate();
const firstDay = new Date(date.setDate(1)).getDay();
return Math.ceil((currentDate + firstDay) / 7);
};
const week = getWeek(new Date("2022-11-11"));
console.log(week + "주차");
// 2주차
2022-11-11와 같은 Date 객체를 넘길 시, 해당 날짜가 위치한 주차를 구해서 반환해주는 함수입니다.
코드 풀이
const date = new Date('2022-11-11');
const currentDate = date.getDate();
// 11
const day = date.getDay();
// 5
- Date.getDate()
- 해당 메서드는 주어진 날짜의 일을 반환합니다.
- Date.getDay()
- 해당 메서드는 주어진 날짜의 요일 정보를 반환합니다.
const 당일 = date.getDate()
const 첫요일 = new Date(date.setDate(1)).getDay();
Math.ceil((당일 + 첫요일) / 7)
1주 차, 2주 차 등의 주차를 구하는 수식에는 첫 요일 정보가 추가로 필요로 합니다.
요일 계산을 안 할시 아래와 같이 오차가 생기게 됩니다.
다음 달력의 11월 시작은 화요일입니다. 이를 무시하고 날짜를 구하게 되면 2일씩 날짜가 당겨지게 됩니다.