獲取一段日期的工作日天數,週末天數
阿新 • • 發佈:2020-09-09
/** * get work days * @param start 2020-09-01 * @param end 2020-09-30 */ export const getWeekDayCount = (start: string, end: string) => { const range = moment(end).diff(moment(start)); const d = moment.duration(range); const days = d.asDays() + 1; // total days const weekDuration = Math.ceil(d.asWeeks()); // week number const newStart = moment(start) .add(weekDuration * 7, 'days') .format('YYYY-MM-DD'); // Calculate using the full week let weekendDays = 2 * weekDuration; if (newStart !== end) { // start week day !== end week day let startDay = moment(newStart).format('d'); let endDay = moment(end).format('d'); if (Number(endDay) > Number(startDay)) { weekendDays -= 2; } } else { const endWeek = moment(newStart).format('d'); // if start is 6 or 0, should += 1 if (endWeek === '0' || endWeek === '6') { weekendDays++; } } return { weekDays: days - weekendDays, weekendDays: weekendDays, }; };