본문 바로가기

REACT

jQuery로 특정 주차 날짜 가져오기 (FullCalendar 기반)

728x90

가끔 이런 경우가 있죠. 예를 들어서, 1주차, 3주차, 4주차, 5주차의 날짜만 뽑아오고 싶을 때가 있다.

그럴 땐 $(".fc-week") 기준으로 DOM을 파고들어가면 된다.
(이 예제는 FullCalendar에서 .fc-week DOM 구조를 기준으로 한 설명)


핵심 개념

  • .fc-week : 한 주 단위의 row
  • .fc-bg td.fc-day : 요일별 날짜 셀
  • .fc-other-month : 현재 달이 아닌 날짜 셀
  • data-date : 날짜 정보가 담긴 속성

구현 코드


// 가져오고 싶은 주차
const wkArr = [1, 3, 4, 5];
const dates = [];

for (let j = 0; j < wkArr.length; j++) {
  const weekIndex = wkArr[j] - 1;

  for (let w = 0; w < 7; w++) {
    const $wkDay = $(".fc-week").eq(weekIndex).find("div.fc-bg").find("td.fc-day").eq(w);

    // 이번 달의 날짜만 (지난달, 다음달 날짜 제거)
    if (!$wkDay.hasClass("fc-other-month")) {

      // 주말 제외하고 싶다면 아래 조건 추가
      if (!$wkDay.hasClass("fc-sat") && !$wkDay.hasClass("fc-sun")) {
        dates.push($wkDay.data("date"));
      }

    }
  }
}

console.log(dates);  // 원하는 날짜 배열 출력

동작 방식 설명

  1. wkArr 배열을 반복하며 주차(index)를 선택한다.
  2. 각 주차 내에서 td.fc-day를 7번(월~일) 순회.
  3. .fc-other-month 클래스를 가진 셀은 건너뛴다. (이번 달이 아님)
  4. .fc-sat, .fc-sun 클래스로 주말도 제외할 수 있다.
  5. 남은 날짜에서 data-date 속성을 읽어와 dates 배열에 넣는다.

 예시 결과

예를 들어 2020년 12월에 대해 위 조건을 적용하면, 1, 3, 4, 5주차의 평일 날짜만 가져오게 된다. 

728x90
반응형

'REACT' 카테고리의 다른 글

transform과 position: fixed 관계 설명  (0) 2022.03.24
Object – map()을 이용한 JSON 데이터 수정  (0) 2021.10.14
AWS- appspec.yml root  (0) 2020.09.24
gapi oauth2 - google Calendar  (0) 2020.09.15
React / 환경변수 설정 DefinePlugin  (0) 2020.08.11