奇怪的Javascript日期差异

时间:2014-05-20 23:32:12

标签: javascript date

有人能解释下面输出中的差异吗?我的代码如下:

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() );
}

由此产生的输出是:

 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 

我已多次看过这个问题了,对于我的生活,我无法理解为什么dt.getMonth()显示当月之前的一个月。我已在Chrome和IE上确认了相同的行为。

1 个答案:

答案 0 :(得分:3)

getMonth返回的数字是从零开始的,所以1月是0,2月是1,依此类推,直到12月11日。来自MDN Documentation on Date

  

     

表示月份的整数值,从1月的0开始到12月的11。

  

<强> Date.prototype.getMonth()

     

根据当地时间返回指定日期的月份(0-11)。