inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

상태관리와 Props 1

강의 관련 질문은 아니지만.. javascript 함수 관련 질문 있습니다!

해결된 질문

410

하리

작성한 질문수 8

0

안녕하세요.

해당 강의를 완주하고 개인 프로젝트를 하는 도중에 이해되지 않은 부분이 있어서 글을 남기게 되었습니다!

 

예를 들어 오늘이 6일이면 6일이 몇주차인지를 계산하는 아래 코드를 작성하고 있었는데요!

const today = now.getDate();
const firstDay = new Date(now.setDate(1)).getDay();
const week = Math.ceil((today + firstDay) / 7);

today 변수는 오늘 날짜를 가져와서 6이 출력되고

firstDay는 첫요일을 가져오고 싶어서 작성했는데 5가 출력되고

week에서는 6+5 / 7 이므로 1.4에서 반올림 되어 2로 나오고 있습니다! 9월 6일은 2주차기 때문에 제대로 계산은 되는데 new Date(now.setDate(1)).getDay(); 이 부분이 사실 이해가 되지 않습니다. 9월의 첫째일은 1일로 setDate(1)을 해주었는데 getDay()로 가져오는 값은 첫요일인 1일을 제외한 요일인 5일을 가져오는 것일까요..?

typescript

답변 2

2

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

코드를 보면 new Date(now.setDate(1)).getDay() 부분에서 첫째일의 요일을 가져오고 있는 것이 맞아요. setDate(1)을 통해 현재 날짜의 일자를 1일로 설정하고, getDay()를 통해 해당 일자의 요일을 가져옵니다. JavaScript에서 일요일은 0, 월요일은 1, …, 토요일은 6으로 나타내게 되어있어요.

setDate(1)은 기존의 날짜 객체를 수정하게 되므로, now 변수가 첫째일로 변경되었다가 다시 현재 날짜로 되돌아갑니다. 그래서 today 변수에서는 현재 날짜가 제대로 출력되고, firstDay 변수에서는 첫째일의 요일이 출력되는 것이에요.

그리고 week 변수에서는 todayfirstDay 값을 더해서 7로 나누고, 올림 처리하여 주차를 구하는 식이 적용되는 것입니다. 따라서 6+5가 됩니다.

만약에 첫째일의 요일을 제외한 날짜를 가져오고 싶다면, getDate()를 사용하시면 됩니다.

더 궁금한 점이 있으시면 언제든지 물어보세요! 좋은 하루 되세요~요.

1

이정환 Winterlood

안녕하세요 이정환입니다.

우선 위 코드에서 firstDay의 값이 5인 이유는

new Date(now.setDate(1))의 결과는 이번달 첫번째 일 (9월 1일)이 되고
이 결과에서 getDay 메서드를 사용해 해당 날짜가 이번주의 몇번째 요일인지 구했기 때문에 결국 금요일에 해당되어 5가 저장되는 것 입니다 (0부터 일,월,화 ...)

  new Date(date.setDate(1)) // 9월 1일 날짜 객체
  new Date(date.setDate(1)).getDay() // 5(금요일)

이렇게 계산하는 이유는 모든 월의 1일이 일요일이나 월요일로 시작하지 않기 때문입니다.

0

하리

넵! 자세한 답변 감사합니다!

핸드북 light/dark mode 관련 이슈가 있는 것 같습니다.

0

18

1

제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.

0

30

2

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

36

2

outDir 옵션 추가 후 컴파일 오류 질문

0

78

1

호출 시그니처 질문

0

71

2

서로소 유니언 타입이 discriminated union과 동의어 인가요?

0

83

2

조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제

0

72

1

할인쿠폰 관련하여

0

167

2

프론트엔드에서의 인터페이스활용

0

99

2

안녕하세요 이정환님!

0

97

1

Node.js 설치에 관한 질문입니다.

0

82

2

함수 타입 호출 시그니처

0

63

1

35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?

0

69

2

인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?

0

122

4

마우스 호버 시 정보

0

97

2

vite으로 리액트 빌드하기를 업데이트해주세요.

1

92

2

타입가드를 만들어 사용하는 이유가 궁금합니다.

0

88

2

섹션 12가 너무 어려운데... 정상이겠죠..?

0

141

2

선생님.. 알고리즘도 강의해주시면안되나요

0

105

2

선생님은 어떻게 이런걸 아세요?

0

136

1

type: module

0

102

2

7:17초 업캐스팅 질문이있습니다!

0

83

1

슈퍼타입질문

1

70

2

프로젝트 설치

0

115

2