2011-11-10 34 views
1

看在以前的问题,answers看来这应该工作:加入天为Javascript Date对象,并增加每月

var palindrome = new Date('2011-11-11'); 
var december = new Date('2011-11-11'); 

december.setDate(palindrome.getDate()+20); 
//should be december, but in fact loops back over to Nov 1st) 

jsFiddle

有一个简单的方法,以确保月份是正确递增,还是错过了明显的东西?

+0

'VAR天= 60 * 60 * 24; december.setTime(december.getTime()+(day * 20));'但是我不确定如何添加月份。 – OneOfOne

回答

4

getMonth()调用返回一个介于0和11之间的值,其中0表示1月份,11表示12月份,所以10表示11月份。在字符串中使用时,您需要将值增加1。如果您只是将其输出为字符串,您会看到它具有正确的日期。注意我也必须更改开始日期格式。它似乎并不喜欢2011-11-11所以我做了它11/11/2011http://jsfiddle.net/9HLSW/

6

你可以做这样的:

var dayOffset = 20; 
var millisecondOffset = dayOffset * 24 * 60 * 60 * 1000; 
december.setTime(december.getTime() + millisecondOffset); 
1

你的代码是正确的,但你是将其转换为字符串错误

getMonth()开始与为一月,并与 12月结束。因此,所有你需要做的就是加1月份这样的:

alert(endDate.getFullYear() + "-" + (endDate.getMonth()+1) +"-"+ endDate.getDate()); 

通知的附加括号 - 因为你是同时连接字符串进行数学运算。您不会希望以“”作为月份。

要查看您是否获得了正确的日期,请使用endDate.toDateString()以完全限定的名称(即:1月 - 12月)显示日期。

alert(endDate.toDateString()); 

对于Date对象的更多信息,请在W3Schools的this section