2013-03-23 106 views
0

我已经得到了我的剧本,从开始到结束日期来计算,但我越这样做,我明白了要计算的更多...高级日期计算范围不包括周末和节假日

公司我我写这是因为有一个“请求关闭”页面。两个文本框允许客户以mm/dd/yyyy格式输入开始和结束日期。我目前正在调用dateRange()函数onchange。这将处理这两个日期,然后更新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. 

因此,需要初始计,不包括周末。 在此范围内的假日数,而不是在周末。 原始计数 - 假日数=休假天

+0

你已经包括PHP 。除非您认为PHP很重要,否则请显示最终的HTML – 2013-03-23 17:03:19

回答

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; 
} 
相关问题