I read the documentation of moment.js that if you want to add 1 month from the current date time you use this code
var moment = require('moment'); var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY');
But the problem right now, it is not properly add the date correctly, for example let say the current date is 31/10/2015, explain in code
var currentDate = moment().format('DD-MM-YYYY'); var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY'); console.log(currentDate) // Will result --> 31/10/2015 console.log(futureMonth) // Will result --> 30/11/2015
if you take a look at the current calendar time, 1 month from 31/10/2015
supposed to be 1/12/2015
Could anyone give me some opinion on how to fix this problem.
Thank you
This is a pretty robust function for adding time to an existing moment. To add time, pass the key of what time you want to add, and the amount you want to add. moment(). add(7, 'days');
var currentDate = moment('2015-10-30'); var futureMonth = moment(currentDate).add(1, 'M'); var futureMonthEnd = moment(futureMonth).endOf('month'); if(currentDate.date() != futureMonth.date() && futureMonth.isSame(futureMonthEnd.format('YYYY-MM-DD'))) { futureMonth = futureMonth.add(1, 'd'); } console.log(currentDate); console.log(futureMonth);
DEMO
EDIT
moment.addRealMonth = function addRealMonth(d) { var fm = moment(d).add(1, 'M'); var fmEnd = moment(fm).endOf('month'); return d.date() != fm.date() && fm.isSame(fmEnd.format('YYYY-MM-DD')) ? fm.add(1, 'd') : fm; } var nextMonth = moment.addRealMonth(moment());
DEMO
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With