Just divide it into 3 parts. First week, last week and interim, something like this:
function workday_count(start,end) { var first = start.clone().endOf('week'); // end of first week var last = end.clone().startOf('week'); // start of last week var days = last.diff(first,'days') * 5 / 7; // this will always multiply of 7 var wfirst = first.day() - start.day(); // check first week if(start.day() == 0)
Security Code
var ftest = {date:'2015-02-0',start:1,end:7}; var ltest = {date:'2015-02-2',start:2,end:8}; var f = 'YYYY-MM-DD'; for(var z=ftest.start; z<=ftest.end; ++z) { var start = moment(ftest.date + z); for(var y=ltest.start; y<=ltest.end; ++y) { var end = moment(ltest.date + y); var wd = workday_count(start,end); console.log('from: '+start.format(f),'to: '+end.format(f),'is '+wd+' workday(s)'); } }
Test code output:
from: 2015-02-01 to: 2015-02-22 is 15 workday(s) from: 2015-02-01 to: 2015-02-23 is 16 workday(s) from: 2015-02-01 to: 2015-02-24 is 17 workday(s) from: 2015-02-01 to: 2015-02-25 is 18 workday(s) from: 2015-02-01 to: 2015-02-26 is 19 workday(s) from: 2015-02-01 to: 2015-02-27 is 20 workday(s) from: 2015-02-01 to: 2015-02-28 is 20 workday(s) from: 2015-02-02 to: 2015-02-22 is 15 workday(s) from: 2015-02-02 to: 2015-02-23 is 16 workday(s) from: 2015-02-02 to: 2015-02-24 is 17 workday(s) from: 2015-02-02 to: 2015-02-25 is 18 workday(s) from: 2015-02-02 to: 2015-02-26 is 19 workday(s) from: 2015-02-02 to: 2015-02-27 is 20 workday(s) from: 2015-02-02 to: 2015-02-28 is 20 workday(s) from: 2015-02-03 to: 2015-02-22 is 14 workday(s) from: 2015-02-03 to: 2015-02-23 is 15 workday(s) from: 2015-02-03 to: 2015-02-24 is 16 workday(s) from: 2015-02-03 to: 2015-02-25 is 17 workday(s) from: 2015-02-03 to: 2015-02-26 is 18 workday(s) from: 2015-02-03 to: 2015-02-27 is 19 workday(s) from: 2015-02-03 to: 2015-02-28 is 19 workday(s) from: 2015-02-04 to: 2015-02-22 is 13 workday(s) from: 2015-02-04 to: 2015-02-23 is 14 workday(s) from: 2015-02-04 to: 2015-02-24 is 15 workday(s) from: 2015-02-04 to: 2015-02-25 is 16 workday(s) from: 2015-02-04 to: 2015-02-26 is 17 workday(s) from: 2015-02-04 to: 2015-02-27 is 18 workday(s) from: 2015-02-04 to: 2015-02-28 is 18 workday(s) from: 2015-02-05 to: 2015-02-22 is 12 workday(s) from: 2015-02-05 to: 2015-02-23 is 13 workday(s) from: 2015-02-05 to: 2015-02-24 is 14 workday(s) from: 2015-02-05 to: 2015-02-25 is 15 workday(s) from: 2015-02-05 to: 2015-02-26 is 16 workday(s) from: 2015-02-05 to: 2015-02-27 is 17 workday(s) from: 2015-02-05 to: 2015-02-28 is 17 workday(s) from: 2015-02-06 to: 2015-02-22 is 11 workday(s) from: 2015-02-06 to: 2015-02-23 is 12 workday(s) from: 2015-02-06 to: 2015-02-24 is 13 workday(s) from: 2015-02-06 to: 2015-02-25 is 14 workday(s) from: 2015-02-06 to: 2015-02-26 is 15 workday(s) from: 2015-02-06 to: 2015-02-27 is 16 workday(s) from: 2015-02-06 to: 2015-02-28 is 16 workday(s) from: 2015-02-07 to: 2015-02-22 is 10 workday(s) from: 2015-02-07 to: 2015-02-23 is 11 workday(s) from: 2015-02-07 to: 2015-02-24 is 12 workday(s) from: 2015-02-07 to: 2015-02-25 is 13 workday(s) from: 2015-02-07 to: 2015-02-26 is 14 workday(s) from: 2015-02-07 to: 2015-02-27 is 15 workday(s) from: 2015-02-07 to: 2015-02-28 is 15 workday(s)
Kokizzu
source share