I read the documentation of moment.js that if you want to add 1 month from the current date time you use this code
我阅读了moment.js的文档,如果你想从当前日期时间加1个月,你可以使用这段代码
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
但是现在问题是,它没有正确添加日期,例如假设当前日期是2015年10月31日,在代码中解释
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
如果你看看当前的日历时间,2015年10月31日的1个月应该是2015年1月12日
Could anyone give me some opinion on how to fix this problem.
谁能给我一些关于如何解决这个问题的意见。
Thank you
谢谢
1 个解决方案
#1
27
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
#1
27
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