ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] Date 객체 사용시 주의할 점
    programing/Language 2019. 8. 4. 14:16

    안녕하세요, Einere입니다.

    (ADblock을 꺼주시면 감사하겠습니다.)


    시간을 다루기 위해서 Date객체를 사용하는 일이 많을 것입니다.

    최근에 Date객체를 이용한 기능을 구현하면서 겪었던 점에 대해 공유하려고 합니다.

     

     

     

    month

    프로그래머스 과제로 투두앱을 제작하는 과제가 있었는데, 그 때 월이 제대로 설정되지 않아서 정상적으로 작동하지 않았던 기억이 있습니다. 또한 최근에 부스트캠프에서 열차 도착 시간 예측 기능을 구현해야 했는데, 마찬가지로 또 요상한 동작을 하는 것을 경험했습니다.

    이런 현상이 발생하는 이유는 바로 Date객체의 월(month)을 잘못 설정했기 때문입니다.

     

    const current = new Date();
    console.log(current); // Sun Aug 04 2019 14:05:42 GMT+0900 (한국 표준시) 출력
    current.getMonth(); // 7 출력

    으음?? 분명 글을 쓰는 시점은 8월인데 getMonth()하니 7이 튀어나옵니다.

    한번 시간여행을 해서 2018년 1월 1일로 가볼까요?

     

    const dateTime = new Date(2018, 1, 1, 13, 24, 35);
    console.log(dateTime); // Thu Feb 01 2018 13:24:35 GMT+0900 (한국 표준시) 출력
    console.log(dateTime.getMonth()); // 1 출력

    결과를 보니 2018년 2월 1일로 설정되었군요.

     

    위 결과를 토대로 추론을 해보면, 월을 설정할 때 시작은 0부터 시작하여 11에서 끝난다는 것을 알 수 있습니다.

    한번 더 테스트 해볼까요?

     

    const dec = new Date(2019, 11, 25, 8, 9, 10);
    console.log(dec); // Wed Dec 25 2019 08:09:10 GMT+0900 (한국 표준시) 출력
    

    오.. 예상한대로 출력됩니다.

    정말 일관성 없는 객체인 것 같습니다.

    그럼 일도 0부터 시작하지 왜..

     

     

    MDN

    The getMonth() method returns the month in the specified date according to local time, as a zero-based value (where zero indicates the first month of the year).

    웹 개발자의 성지 MDN에서 getMonth()를 찾아보니 위와 같은 말이 나옵니다. 말하자면 0기반 값이라고 하네요.

    이래서 레퍼런스를 먼저 살펴봐야 합니다...

    댓글

Designed by black7375.