例子:
- 现在是 2012 年 3 月 26 日。我要求明年 2 月。它应该返回 2013-01-01
- 现在是 2012 年 3 月 26 日。我要求明年 4 月。它应该返回 2012-04-01
例子:
你可以做这样的事情。
// date is a JS date or moment
// month is the zero indexed month (0 - 11)
function nextMonth(date, month) {
var input = moment(date);
var output = input.clone().startOf('month').month(month);
return output > input ? output : output.add(1, 'years');
}
请参阅有关操作片刻的文档。http://momentjs.com/docs/#/manipulating/
写了这个:
/**
@var date is a JS date or moment
@var month is the month in the 0-11 format
*/
var getNextMonthOccurrence: function(date, month){
var m = moment(date);
var this_year = new Date(m.year(), month, 1);
var next_year = new Date(m.year() + 1, month, 1);
return this_year > m ? this_year : next_year;
}
但是必须有更好的方法来做到这一点......
明年1月1日:
moment().month(0+12).date(1).hour(0).minute(0).second(0)
明年3月17日:
moment().month(2).date(17).hour(0).minute(0).second(0)
编辑:您只需要注意创建日期是否小于现在。由于现在是 2 月,因此获得下一个 1 月需要增加 12 个月,但获得下一个 3 月则不需要。
function getNextJan(){
var j = moment().month(0).date(1).hour(0).minute(0).second(0)
if(j < moment()) return j.month(12)
return j
}