>  기사  >  웹 프론트엔드  >  해당 월에 9를 제공하면 JavaScript의 날짜 생성자가 10월을 반환하는 이유는 무엇입니까?

해당 월에 9를 제공하면 JavaScript의 날짜 생성자가 10월을 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 17:22:03812검색

Why Does JavaScript's Date Constructor Return October When I Provide 9 for the Month?

JavaScript의 날짜 생성자에서 월 불일치 탐색

JavaScript에서 날짜 작업을 할 때 월이 색인화되는 방식의 특이성을 이해하는 것이 중요합니다. Mozilla Firefox Firebug에 대한 최근 쿼리는 우려를 불러일으켰습니다.

var myDate = new Date(2012, 9, 23, 0, 0, 0, 0);
console.log(myDate);

출력:

Date {Tue Oct 23 2012 00:00:00 GMT-0400 (Eastern Daylight Time)}

이 불일치를 조사한 결과 사용자는 예상치 못한 결과를 발견했습니다. JavaScript는 날짜가 아닌 10월을 반환했습니다. 9월, 의도한 대로.

진실 밝히기: 0부터 시작하는 인덱싱

핵심은 JavaScript의 Date 생성자가 몇 달 동안 사용하는 0부터 시작하는 인덱싱에 있습니다. 이 인덱싱 방식에서 월은 1월을 0으로 시작하고 11은 12월을 나타냅니다. 따라서 생성자(9)에 전달된 월 인덱스는 실제로 9월이 아닌 10월에 해당합니다.

참조를 통해 명확하게 설명:

MDN(Mozilla 개발자 네트워크)은 명시적인 지침을 제공합니다.

month: Integer value representing the month, beginning with 0 for January to 11 for December.

또한 ECMAScript 언어 사양은 기술적인 통찰력을 제공합니다.

7. Let mn be ?(ℝ(m) modulo 12).

이 줄은 월 입력이 12로 모듈로 연산을 수행하여 효과적으로 월 인덱스를 0 범위 내로 래핑한다는 것을 설명합니다.

따라서 JavaScript로 날짜를 구성할 때 혼란이나 예상치 못한 결과를 피하기 위해 월의 인덱스는 0이라는 점을 기억하는 것이 중요합니다.

위 내용은 해당 월에 9를 제공하면 JavaScript의 날짜 생성자가 10월을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.