添加Javascript Date对象的天数,也增加月份

时间:2011-11-10 14:59:24

标签: javascript date

查看之前的问题并answers看来这应该有效:

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

是否有一种简单的方法可以确保月份正确递增,或者我错过了一些明显的东西?

3 个答案:

答案 0 :(得分:6)

你可以这样做:

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

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

getMonth()以1月份的 0 开头,并以12月的 11 结束。所以你需要做的就是在这个月加1:

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

注意附加括号 - 您在连接字符串时执行数学运算。您不希望以月份“ 101 ”结束。

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

alert(endDate.toDateString());

有关Date对象的更多信息,请查看w3schools中的this section