查看之前的问题并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
是否有一种简单的方法可以确保月份正确递增,或者我错过了一些明显的东西?
答案 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/2011
。 http://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