在javascript中查找给定日期的下一个月

在javascript中查找给定日期的下一个月,javascript,date,datetime,Javascript,Date,Datetime,我有一段代码可以找到给定日期的下一个月 var d = new Date('2018-03-31'); dt = new Date(d.setMonth(d.getMonth() + 1)); document.getElementById("demo").innerHTML = dt; 但是我想知道这里有什么不对,因为它给了March一个月的时间,而不是April 演示: var d=新日期('2018-03-31'); dt=新日期(d.setMonth(d.getMonth()+1));

我有一段代码可以找到给定日期的下一个月

var d = new Date('2018-03-31');
dt = new Date(d.setMonth(d.getMonth() + 1));
document.getElementById("demo").innerHTML = dt;
但是我想知道这里有什么不对,因为它给了
March
一个月的时间,而不是
April

演示:
var d=新日期('2018-03-31');
dt=新日期(d.setMonth(d.getMonth()+1));
document.getElementById(“demo”).innerHTML=dt

setMonth会改变原始日期对象-只需尝试
setMonth
,然后再次引用日期对象,而不是创建新对象:

var d=新日期('2018-03-31');
d、 setMonth(d.getMonth()+1);
document.getElementById(“demo”).innerHTML=d

四月只有30天。如果将3月31日的月份加上1,则1个月后即5月1日。

没有
4月31日
,因此转到
5月1日
。您可以使用
2018-03-30

var d=新日期('2018-03-30');
dt=新日期(d.setMonth(d.getMonth()+1));
document.getElementById(“demo”).innerHTML=dt

使用

setMonth(月、日)

d.setMonth(d.getMonth()+1,1)其中日期为下个月的第一天

仅当您对月份部分感兴趣时

var d=新日期('2018-03-31');
d、 setMonth(d.getMonth()+1,1);
dt=新日期(d);
document.getElementById(“demo”).innerHTML=dt

四月没有31日:)但它是
月=月+1
对吗?是的,但
四月31日不存在,所以它转到
五月一日
它在日期上加上一个月,而不仅仅是在月份上。所以你以4月31日结束,实际上变成了5月1日,仍然是5月…呃,对我来说是4月。我猜这是一个时区问题
d=新日期(“2018-01-30”)
…-如果TO不能更改字符串怎么办?那么如何获得
April
?@mps检查重复项并检查yogen的回答谢谢@ThumChoonTat。。!!!理解错误。。!!