JSFiddle - React, Tailwind, and code Playground
JavaScript
// remember, month is '0' based
dat0 = new Date(2012, 9, 31);
dat0.setMonth(dat0.getMonth() + 1); // Oct 31 + 1 month = Dec. 1
dat1 = new Date(2011, 0, 31); // Jan 31 (non leap year)
dat1.setMonth(dat1.getMonth() + 1); // Mar 3
dat2 = new Date(2012, 0, 31); // Jan 31 (leap year)
dat2.setMonth(dat2.getMonth() + 1); // Mar 2
dat3 = new Date(2011, 11, 31); // Dec 31
dat3.setMonth(dat3.getMonth() - 1); // minus one month is Dec 1
dat4 = new Date(2011, 10, 30); // Nov 30
dat4.setMonth(dat4.getMonth() - 1); // minus one month is Oct 30
alert(dat0 + "\n" + dat1 + "\n" + dat2 + "\n" + dat3 + "\n" + dat4);