Как правильно добавить 1 месяц от текущей и текущей даты в moment.js
Я прочитал документацию момента .js, что если вы хотите добавить 1 месяц с текущей даты, вы используете этот код
var moment = require('moment');
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY');
Но проблема прямо сейчас, она неправильно добавляет дату правильно, например
допустим, текущая дата 31/10/2015, объясните в коде
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
если вы посмотрите на текущее время календаря, 1 месяц от 31/10/2015
предположительно 1/12/2015
Может ли кто-нибудь дать мне некоторое мнение о том, как исправить эту проблему.
Спасибо
Ответы
Ответ 1
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
РЕДАКТИРОВАТЬ
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
Ответ 2
Согласно последнему документу, вы можете сделать following-
Добавить день
moment().add(1, 'days').calendar();
Добавить год
moment().add(1, 'years').calendar();
Добавить месяц
moment().add(1, 'months').calendar();