2017-08-12 14 views
1

私は開始日と日数があるので、従業員が休暇を求めるときは20日と言われる問題に取り組んでいるので、その日にその日を追加しますこの人が仕事を再開する日を得るために週末と祝日を含む。ここではこれまで私が働いてきたことがあります。しかし、本当の最後の日付を取得するために失敗しています、従業員休暇日の計算はJavaScriptで

//関数は、以下の機能が私の主な機能になりました

function compare(dt1, dt2){ 
     var equal = false; 
      if(dt1.getDate() == dt2.getDate() && dt1.getMonth() == dt2.getMonth() && dt1.getFullYear() == dt2.getFullYear()) { 
      equal = true; 
     } 
     return equal; 
    } 

休日の比較手順に役立ちます休日

function isHoliday(dt, arr){ 
    var bln = false; 
     for (var i = 0; i < arr.length; i++) { 
      if (compare(dt, arr[i])) { //If days are not holidays 
       bln = true; 
       break; 
        } 
     } 
      return bln; 
    } 

//を選別します私は休日と週末を並べ替えて使用して、開始日に日を追加しようとするので、終了日をアーカイブすることができます。私はこのコードのどこかで間違っていて、今スタックしていると思います。

function returnfinaldate() 
    { 
    var holiday = []; 

    var cy = new Date().getFullYear(); 
    holiday[0] = new Date(cy, 1, 01); 
    holiday[1] = new Date(cy, 1, 26); 
    holiday[2] = new Date(cy, 2, 16); 
    holiday[3] = new Date(cy, 3, 08); 
    holiday[4] = new Date(cy, 3, 20); 
    holiday[5] = new Date(cy, 4, 14); 
    holiday[6] = new Date(cy, 4, 16); 
    holiday[7] = new Date(cy, 4, 17); 
    holiday[8] = new Date(cy, 5, 01); 
    holiday[9] = new Date(cy, 5, 14); 
    holiday[10] = new Date(cy, 6, 03); 
    holiday[11] = new Date(cy, 6, 09); 
    holiday[12] = new Date(cy, 6, 21); 
    holiday[13] = new Date(cy, 6, 21); 
    holiday[14] = new Date(cy, 6, 26); 
    holiday[15] = new Date(cy, 9, 02); 
    holiday[16] = new Date(cy, 9, 22); 
    holiday[17] = new Date(cy, 10, 09); 
    holiday[18] = new Date(cy, 12, 21); 
    holiday[19] = new Date(cy, 12, 25); 
    holiday[20] = new Date(cy, 12, 26); 

    var startDate = new Date(); 
    var endDate = new Date(); 

    startDate='8/1/2017'; 

    noOfDaysToAdd = 7, count = 0; 

    while (count < noOfDaysToAdd) { 
     endDate.setDate(endDate.getDate()+1) 
     // Date.getDay() gives weekday starting from 0(Sunday) to 
     // 6(Saturday) 
     if (endDate.getDay() != 0 && endDate.getDay() != 6 && !isHoliday(endDate, holiday)) { 
      count++; 
     } 
    } 

    return endDate; 
    } 

最後の日付が間違っています。ここで何か助けが必要です。あなたのロジックは罰金だ。ここ

+0

あなた 'endDate'は、現在の日付ではない' startDate' – charlietfl

答えて

-1

が他の日の計算の出発点として開始日を使用し

function returnfinaldate() { 
      var holiday = []; 
      holiday[0] = new Date(2017, 9, 5);// holiday 1 
      holiday[1] = new Date(2017, 9, 6);//holiday 2 


      var startDate = new Date(); 
      var endDate = new Date(); 

      startDate = new Date(2017, 7, 1);// '8/1/2017'; 

      noOfDaysToAdd = 7, count = 0; 
      endDate = startDate; 
     //use below code to include start date in count else comment below code 
      // if (endDate.getDay() != 0 && endDate.getDay() != 6 && !isHoliday(endDate, holiday)) { 
      // count++; 
      // } 
      while (count < noOfDaysToAdd) { 
       endDate.setDate(endDate.getDate() + 1) 
       // Date.getDay() gives weekday starting from 0(Sunday) to 
       // 6(Saturday) 
       if (endDate.getDay() != 0 && endDate.getDay() != 6 && !isHoliday(endDate, holiday)) { 
        count++; 
       } 
      } 

      return endDate; 
     } 
+0

ありがとうMRヨーゲッシュの文字列バージョンに基づいています。あなたは私の人生を救っただけです。それはうまく動作します – Bels

+0

私はちょうどendDateを初期化することを実現しました= startDate;余分な月をendDateに与えています – Bels

+0

開始日を作成中に8月のように0から始まる月を作成します7、それが正しければ私にそれを見てみましょう例を提供してください – Yogesh

関連する問題