달력을 만들면서 오늘날짜와 일치하는 셀에는 음영을 넣고 싶었다. 여기서 잠깐🤚 모먼트js로 달력을 만들고싶다면 포스팅:: 동적 달력(캘린더)만들기을 참조하면 된다.
기존코드
이번달 1일부터 for문을 돌면서 현재 날짜와 일치하면 class today를 추가해주는 코드를 구현했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const today = moment(); const firstDayOfMonth = moment({today.year(), today.month() + 1}).startOf('month'); let currentDate = firstDayOfMonth.clone().startOf('week'); //달력의 현재 셀 날짜
for (let i = 0; i < 7; i++) { let cell = $("<td></td>"); // 오늘일자인 경우 class 추가하기 if(currentDate.isSame(today){ cell.addClass("today"); } tableRow.append(cell); currentDate.add(1, 'days'); }
해결코드
isSame은 연월일뿐만 아니라 시분초도 같이 확인한 후 같은지 아닌지 판단한다. 따라서 포맷도 YYYY-MM-DD로 맞춰주면서 시분초를 00으로 바꿔주는 startOf('day')를 사용하면 해결된다.
1 2 3 4
// 오늘일자인 경우 class 추가하기 if(moment(currentDate.startOf('day'), "YYYY-MM-DD").isSame(moment(today.startOf('day'), "YYYY-MM-DD"))){ cell.addClass("today"); }