카테고리 없음

[자바 스크립트] 주말을 제외하고 날짜 범위에서 요일을 찾는 O (1) 방법

행복을전해요 2021. 2. 5. 07:59
// 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