有没有办法让我用moment.js获得本月的最后一个星期一?
我知道我可以在月底结束:
moment().endOf('month')
但最后一个星期一怎么样?
答案 0 :(得分:14)
你几乎就在那里。你只需要添加一个简单的循环来逐步后退,直到找到星期一:
result = moment().endOf('month');
while (result.day() !== 1) {
result.subtract(1, 'day');
}
return result;
答案 1 :(得分:11)
你总是在isoweek星期一得到:
moment().endOf('month').startOf('isoweek')
答案 2 :(得分:1)
moment().endOf('month').day('Monday')
答案 3 :(得分:-2)
我为此设置dropin,一旦你安装/添加它,你就可以这样做:
moment().endOf('month').subtract(1,'w').nextDay(1)
该代码在月末减去1周,然后在下周一。
为简化此操作,您可以:
days = moment().allDays(1) //=> mondays in the month
days[days.length - 1] //=> last monday
本月的所有星期一,然后选择第一个星期一。
您可以像这样进一步简化:
moment().allDays(1).pop()
但这会从列表中删除星期一 - 但如果您没有使用该列表(如上例所示),那就无所谓了。如果是,您可能需要这样:
moment().allDays(1).last()
但它需要一个pollyfill:
if (!Array.prototype.last){
Array.prototype.last = function(){
return this[this.length - 1];
};
};