Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 高级日期范围计算,不包括周末和节假日_Javascript_Date_Range - Fatal编程技术网

Javascript 高级日期范围计算,不包括周末和节假日

Javascript 高级日期范围计算,不包括周末和节假日,javascript,date,range,Javascript,Date,Range,我已经让我的脚本计算从开始到结束的日期,但我越这样做,我越意识到什么是必须计算 我写这篇文章的公司有一个“请求关闭”页面。两个文本框允许客户端以mm/dd/yyyy格式输入开始和结束日期。我现在让它调用onchange的dateRange()函数。这将处理这两个日期,然后更新范围内的打印计数 现在是挑战。在这个范围内,我必须排除周末,我已经看到了一些例子,但无法理解。我还必须排除这家公司认为的带薪假期,如果他们在范围内降落,但在周末,也必须避免带薪假期 Javascript函数: functio

我已经让我的脚本计算从开始到结束的日期,但我越这样做,我越意识到什么是必须计算

我写这篇文章的公司有一个“请求关闭”页面。两个文本框允许客户端以mm/dd/yyyy格式输入开始和结束日期。我现在让它调用onchange的
dateRange()
函数。这将处理这两个日期,然后更新范围内的打印计数

现在是挑战。在这个范围内,我必须排除周末,我已经看到了一些例子,但无法理解。我还必须排除这家公司认为的带薪假期,如果他们在范围内降落,但在周末,也必须避免带薪假期

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.
带薪休假日:在您的范围内,有0天是带薪休假日,不收取休假日费用。
假期:您将使用0天的假期。
所以,需要原始计数,不包括周末。 计算该范围内的假日天数,而不是周末。
原始计数-假期计数=假期天数

好吧,我在这里没有得到任何回应,但为了提供我用一组假期日期样本实现这一点的结果

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;
}
函数日期计数(){
var startDate=新日期(document.getElementById('start').value);
var endDate=新日期(document.getElementById('end').value);
var holiDates=[];
holiDates[0]=新日期(“2013年1月16日”);
holiDates[1]=新日期(“2013年4月20日”);
holiDates[2]=新日期(“2014年1月16日”);
var length=holiDates.length,fullCount=0,paidCount=0,vacDays=0;
对于(变量i=0;i如果(holiDates[i]>=startDate&&holiDates[i]那么,我在这里没有得到任何回应,但要提供我通过一组假日日期样本实现这一点的结果

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;
}
函数日期计数(){
var startDate=新日期(document.getElementById('start').value);
var endDate=新日期(document.getElementById('end').value);
var holiDates=[];
holiDates[0]=新日期(“2013年1月16日”);
holiDates[1]=新日期(“2013年4月20日”);
holiDates[2]=新日期(“2014年1月16日”);
var length=holiDates.length,fullCount=0,paidCount=0,vacDays=0;
对于(变量i=0;i如果(holiDates[i]>=startDate&&holiDates[i]您已经包含PHP。请显示最终HTML,除非您认为PHP很重要…您已经包含PHP。请显示最终HTML,除非您认为PHP很重要。。。