// Count days from d0 to d1 inclusive, excluding weekends
function countWeekDays( d0, d1 )
{
var ndays = 1 + Math.round((d1.getTime()-d0.getTime())/(24*3600*1000));
var nsaturdays = Math.floor((ndays + d0.getDay()) / 7);
return ndays - 2*nsaturdays - (d0.getDay()==0) + (d1.getDay()==6);
}
2014 년 1 월의 예 :
January 2014
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
countWeekDays(new Date(2014,0,1),new Date(2014,0,1)) // 1
countWeekDays(new Date(2014,0,1),new Date(2014,0,2)) // 2
countWeekDays(new Date(2014,0,1),new Date(2014,0,3)) // 3
countWeekDays(new Date(2014,0,1),new Date(2014,0,4)) // 3
countWeekDays(new Date(2014,0,1),new Date(2014,0,5)) // 3
countWeekDays(new Date(2014,0,1),new Date(2014,0,6)) // 4
NB Date
입력은 하루 중 거의 같은 시간에 있어야합니다. Date
위의 예에서와 같이 연도, 월, 일만을 기준으로 개체를 만드는 경우 문제가 없습니다. 카운터 예로서 1 월 1 일 오전 12시 1 분부터 1 월 2 일 오후 11시 59 분까지만 이틀에 걸쳐 있지만 위 함수는이 시간을 사용하면 3으로 계산됩니다.
출처
https://stackoverflow.com/questions/22050117