1

開始日から終了日まで計算するスクリプトを入手しましたが、これを実行すればするほど、計算する必要があることに気づきました...

私がこれを書いている会社には、「リクエストオフ」ページがあります。2つのテキストボックスを使用すると、クライアントは開始日と終了日をmm / dd/yyyy形式で入力できます。現在、dateRange()関数onchangeを呼び出しています。これにより、2つの日付が処理され、SPAN内の印刷されたカウントが更新されます。

今の挑戦。この範囲内で、例を見たが理解できない週末を除外する必要があります。また、この会社が有給休暇と見なしているものを除外する必要があります。これも、範囲内に着陸する場合は、週末に回避する必要があります。

Javascript関数:

function dateRange() {
  var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
  var firstDate = new Date(document.getElementById('start').value);
  var secondDate = new Date(document.getElementById('end').value);
  var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)-1));
  // holDays = ?????;
  // vacDays = diffDays - holDays;
  document.getElementById("holDays").innerHTML = diffDays || 0;
  document.getElementById("vacDays").innerHTML = diffDays || 0;
}

HTML日付入力:

From: <INPUT type="text" name="start" id="start" value="" onchange="dateRange()" class="datepicker" />
To: <INPUT type="text" name="end" id="end" value="" onchange="dateRange()" class="datepicker" />

残りのカウントを保持する位置:

Paid Off Days: <SPAN id="holDays">0</SPAN> of the days in your range are Paid Holidays and will not be charged Vacation Days.
Vacation Days: You will be using <SPAN id="vacDays">0</SPAN> Day(s) of vacation.

したがって、週末を除いて、元のカウントが必要です。週末ではなく、その範囲内の休日の日数。元のカウント-休日カウント=休暇日

4

1 に答える 1

1

ここでは何の回答も得られませんでしたが、休日の日付のサンプル セットを使用してこれを達成した結果を提供するには...

function dateCount() {
  var startDate = new Date(document.getElementById('start').value);
  var endDate = new Date(document.getElementById('end').value);
  var holiDates = [];
  holiDates[0] = new Date("01/16/2013");
  holiDates[1] = new Date("04/20/2013");
  holiDates[2] = new Date("01/16/2014");
  var length = holiDates.length, fullCount = 0, paidCount = 0, vacDays = 0;
  for (var i = 0; i < length; i++) {
    holiday = holiDates[i].getDay();
    if(holiDates[i] >= startDate && holiDates[i] <= endDate && holiday != 0 && holiday != 6) {
      paidCount++;
    }
  }
  while (startDate <= endDate) {
    var day = startDate.getDay();
    if(day != 0 && day != 6) {
      fullCount++; 
    }
    startDate.setDate(startDate.getDate() + 1); 
  }
  document.getElementById("holDays").innerHTML = paidCount || 0;
  vacDays = fullCount - paidCount;
  document.getElementById("vacDays").innerHTML = vacDays || 0;
}
于 2013-04-07T16:37:11.207 に答える