2017-10-06 5 views
2

다음은 Visual Studio 직접 실행 창에서 출력되는 내용입니다. mondaysDate으로 시작하여 두 번째 날짜 인 thisDate을 만든 다음 mondaysDate를 기본으로 사용하여 정수를 추가합니다.이 자바 스크립트 날짜 수학에 내 오류를 설명하시기 바랍니다

날짜에 3을 더하면 11 월 2 일이되고 날짜에 4를 더하면 12 월 4 일이되는 이유를 모르겠습니다.

setDate()를 두 번 이상 호출하는 것은 불법입니까?

?mondaysDate 
Mon Oct 30 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

?thisDate 
Mon Oct 30 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

?thisDate.setDate(mondaysDate.getDate() + 3) 
1509595200000 
?thisDate 
Thu Nov 02 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 


?thisDate.setDate(mondaysDate.getDate() + 4) 
1512363600000 
?thisDate 
Mon Dec 04 2017 00:00:00 GMT-0500 (Eastern Standard Time) 

?mondaysDate 
Mon Oct 30 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 
+0

'날짜 + 3'이라고 말하면 3 일, 3 개월, 3 년 추가 하시겠습니까? – csmckelvey

+0

나는 요일을 추측하고 있다고 가정합니다. https://stackoverflow.com/questions/3818193/how-to-add-number-of-days-to-todays-date – Tim

+0

예상되는 결과는 무엇입니까? – Cristy

답변

3

문제는 처음 당신이 다음 현재 월 1 일에서 시작, thisDate에 날짜가 상대적으로 설정되어

thisDate.setDate(mondaysDate.getDate() + 3) 
// You set the date to 30 + 3 (33) days from the first day of the current month (Oct 1) 
// Oct 1 + 33 days = Nov 2 
// thisDate = Thu Nov 02 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

thisDate.setDate(mondaysDate.getDate() + 4) 
// You set the date to 30 + 4 (34) days from the first day of the current month (Nov 1) 
// Nov 1 + 34 days = Dec 4 
// thisDate = Mon Dec 04 2017 00:00:00 GMT-0500 (Eastern Standard Time) 

11월 1에서 34 days를 추가 10 월 1 일부터 33 days을 추가 할 것입니다 일 수를 mondaysDate + 4 일 안에 더합니다. setDate을 호출 할 때마다 thisDate을 업데이트합니다.

MDN에서 setDate에 대해 더 자세히 읽을 수 있습니다.

+1

33 일을 추가하는 첫 번째 전화가 왜 안되니? – Tim

+2

@ Patrick Evans : 10 월 30 일까지 33 일을 추가하는 경우 11 월 2 일을 왜 그렇게 말합니까? – Tim

+0

@Tim, Cristy가 첨부 한 MDN 링크를 확인하십시오. 'setDate() 메서드는 현재 설정된 달의 시작 부분을 기준으로 Date 객체의 날짜를 설정합니다. ' –