有没有办法用 MomentJS 获得两个日期之间经过的工作日?工作日将是没有周末的那一周,或者是星期一、星期二、星期三、星期四和星期五。到目前为止,我尝试使用如下diff()
方法(http://momentjs.com/docs/#/displaying/difference/):
var daysElapsed = today.diff(past, 'days');
据我所知,diff()
唯一的方法是提供两个日期之间的所有日子,包括周末。谢谢你的时间!
有没有办法用 MomentJS 获得两个日期之间经过的工作日?工作日将是没有周末的那一周,或者是星期一、星期二、星期三、星期四和星期五。到目前为止,我尝试使用如下diff()
方法(http://momentjs.com/docs/#/displaying/difference/):
var daysElapsed = today.diff(past, 'days');
据我所知,diff()
唯一的方法是提供两个日期之间的所有日子,包括周末。谢谢你的时间!
let start = moment(startDate, 'YYYY-MM-DD'); //Pick any format
let end = moment(); //right now (or define an end date yourself)
let weekdayCounter = 0;
while (start <= end) {
if (start.format('ddd') !== 'Sat' && start.format('ddd') !== 'Sun'){
weekdayCounter++; //add 1 to your counter if its not a weekend day
}
start = moment(start, 'YYYY-MM-DD').add(1, 'days'); //increment by one day
}
console.log(weekdayCounter); //display your total elapsed weekdays in the console!
您将需要为此编写自己的函数。
这并不难,因为您知道确切的开始和结束日期。
我认为这将是非常直接的实施。
尽管这个问题已经很老了,但我偶然发现了它,无法找到我正在寻找的真正答案。
我希望这个解决方案对其他人也有帮助:
const momentStart = moment(initialDate);
const momentFinal = moment(finalDate);
// Get the diff in days between both dates
const diff = momentFinal.diff(momentStart, "days");
// If diff is 7 or bigger, all days are included
if (diff >= 7) {
return moment.weekdays();
}
// Need to calculate, check which day we start from
const firstDay = momentStart.day();
const weekdaysBetween = [];
// For each diff day, we get the next one)
for (let i = 0; i <= diff; i++) {
// use % to loop to beginning again (e.g: start at friday and have +4)
weekdaysBetween.push(moment.weekdays((firstDay + i) % 7));
}
return weekdaysBetween;
您还可以在此处查看可用的演示版本