지난 달에 자바 스크립트로 getMonth 제공


139

Sun Jul 7 00:00:00 EDT 2013 형식으로 날짜를 제공하는 datepicker를 사용하고 있습니다. 월에 7 월이라고해도 getMonth를 수행하면 이전 달이 표시됩니다.

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013");
d1.getMonth());//gives 6 instead of 7

내가 뭘 잘못하고 있죠?


14
그렇습니다 ... 색인0 입니다.
사절

2
자바 스크립트로 날짜를 잊어 버리지 마십시오. 가능하다면 Moment.js를 사용하십시오
Valamas

6
나는 이것이 얼마나 진짜인지 믿을 수
없다

Moment.js는 dateDiffs를 올바르게 수행 할 수 없습니다. 같은 달에 dateDiffs를하고 있다면 괜찮지 만 2 개월 동안 (예 : 27-04-2018 및 24-05-2018) 시도하면 하루가 끝납니다.
rozza

1
시도 할 때까지 기다리십시오 getYear()! ;-)
James Poulose

답변:


266

getmonth () 는 0부터 시작 하기 때문에 원하는 d1.getMonth() + 1것을 달성해야 할 수도 있습니다 .


194
나는 달 숫자 0을 색인화하는 것이 내가 본 가장 멍청한 것이라고 말합니다. '
LarryBud

5
getDate가 1-31을 제공하면 왜 누군가가 0을 원합니까?
Abhinav Gauniyal

6
아마도 당신은해야 할 것입니다 d1.getMonth() < 12 ? d1.getMonth() + 1 : 1-그렇지 않으면 12 월은 13일까요?
DanielKhan

7
@DanielKhan Nope, 12 월은 11 일 것이기 때문에 1을 추가하면 12가 올바르게됩니다. getMonth () 함수는 11보다 큰 값을 반환해서는 안됩니다.
unenthusiasticuser

7
@LarryBud, 추론은 아마도 날짜의 다른 부분 (월, 년,시, 분, 초 ...)과 달리 항상 숫자로 사용되며 월은 종종 텍스트로 변환됩니다. 물론 0부터 시작하는 이름의 배열. C 표준 라이브러리에서는 이미 40 세 이상이어야했습니다.
jcaron

19

getMonth()함수는 인덱스 기반으로 0입니다. 당신은해야합니다d1.getMonth() + 1

최근에 나는 Moment.js 라이브러리를 사용 했으며 결코 뒤돌아 보지 않았습니다. 시도 해봐!


10

변수를 사용한다고 가정

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013");

월은 +1이 정확해야하며 0부터 계산을 시작합니다.

d1.getMonth() + 1 // month 

대조적으로 ....이 방법은 플러스가 필요하지 않습니다 1

d1.getSeconds()   // seconds 
d1.getMinutes()   // minutes 
d1.getDate()      // date    

그리고 그렇지 .getDate()않습니다.getDay()

d1.getDay()       // day of the week as a 

도움이 되었기를 바랍니다

나는 역사적으로 이런 방법들이 일관성이 없다고 생각한다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.