인프런 커뮤니티 질문&답변

강두희님의 프로필 이미지

작성한 질문수

자바스크립트 제대로 배워볼래?

Date 함수 질문

해결된 질문

작성

·

172

0

set 함수를 이용해 현재 년도, 월, 일, 시간, 분, 초 등을 설정할 수 있다고 배웠습니다.

var day = new Date();
      day.setFullYear(2020);
      console.log(day); // Sat Dec 05 2020 14:51:11 GMT+0900 (한국 표준시)

수업 내용처럼 코드를 작성하면 년도 값이 달라져서 나오는데, 아래 코드처럼 작성하면 "912837772073" 이라는 결과가 나옵니다.

두 코드의 차이가 무엇인지, 어떤 점이 잘못되어 해당 결과 값이 나오는지 궁금합니다..!

 var day = new Date();
      console.log(day);
      var day2 = day.setFullYear(1998);
      console.log(day2);

답변 1

1

개발자의 품격님의 프로필 이미지
개발자의 품격
지식공유자

자바스크립트의 Date 객체와 setFullYear 메소드에 대한 질문에 답변드리겠습니다.

첫 번째 코드에서는 new Date()를 사용하여 현재 날짜와 시간을 나타내는 Date 객체를 생성합니다.

이후 setFullYear(2020) 메소드를 사용하여 해당 객체의 년도를 2020으로 설정했습니다..

console.log(day)를 통해 수정된 Date 객체를 출력하면, 년도가 2020으로 설정된 전체 날짜와 시간이 출력됩니다.

여기까지는 잘 이해하신것 같습니다.

 

두 번째 코드에서는 동일하게 new Date()로 Date 객체를 생성한 후, setFullYear(1998)을 사용하여 년도를 1998로 설정했습니다.. 그러나, 이 코드에서는 setFullYear 메소드의 반환값을 day2 변수에 할당합니다.

setFullYear 메소드는 수정된 Date 객체를 반환하는 것이 아니라, 수정된 날짜의 타임스탬프(1970년 1월 1일 00:00:00 UTC부터 경과된 밀리초 수)를 반환합니다.

따라서 console.log(day2)를 통해 출력되는 값은 1998년으로 설정된 날짜의 타임스탬프입니다.

결론적으로, 두 코드의 주요 차이점은 반환값의 처리 방식에 있습니다. 첫 번째 코드에서는 Date 객체 자체를 출력하는 반면, 두 번째 코드에서는 setFullYear 메소드의 반환값인 타임스탬프를 출력합니다. 이 때문에 두 번째 코드에서는 예상과 다른 숫자 값이 출력된 것입니다.

강두희님의 프로필 이미지
강두희
질문자

자세하게 알려주셔서 감사합니다 ㅎㅎ!! 덕분에 이해가 됐습니다!