0

Can anyone explain the discrepancy in the output below? My code is as follows:

function addDaysToDate( theDate, days ) { var thisDate = new Date( theDate.getTime() + days*24*60*60*1000 ); return new Date( thisDate ); } var dt = new Date( '5/20/2014' ); for (i=0;i<6;i++) { var dt = addDaysToDate( dt, 7 ); console.log( dt + '---' + dt.getMonth() + '/' + dt.getDate() + '/' + dt.getYear() ); } 

The output generated from that is:

 Tue May 27 00:00:00 PDT 2014---4/27/2014 Tue Jun 3 00:00:00 PDT 2014---5/3/2014 Tue Jun 10 00:00:00 PDT 2014---5/10/2014 Tue Jun 17 00:00:00 PDT 2014---5/17/2014 Tue Jun 24 00:00:00 PDT 2014---5/24/2014 Tue Jul 1 00:00:00 PDT 2014---6/1/2014 

I have looked at this a number of times, and for the life of my I cannot rationalize why dt.getMonth() shows a month prior to the current month. I have confirmed identical behavior on both Chrome and IE.

0

1 Answer 1

3

The number returned by getMonth is zero-based, so January is 0, February is 1, and so on until December which is 11. From the MDN Documentation on Date:

month

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

And:

Date.prototype.getMonth()

Returns the month (0-11) in the specified date according to local time.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.