在jquery UI datepicker中计算两个日期之间的剩余天数(不包括国家假日)

在jquery UI datepicker中计算两个日期之间的剩余天数(不包括国家假日),jquery,jquery-ui-datepicker,Jquery,Jquery Ui Datepicker,我需要使用jQueryUIDatePicker计算两个日期之间的剩余天数,不包括节假日和工作日(周六、周日) 我已经成功地计算了不包括工作日在内的剩余天数,但只是停留在不包括国定假日的情况下。如何在计算剩余天数时排除这些法定假日 以下是代码: var natDays=[]; natDays[0]=[1, 27]; natDays[1]=[2, 6]; natDays[2]=[3, 17]; natDays[3]=[2, 7]; function nationalDays(date) {

我需要使用jQueryUIDatePicker计算两个日期之间的剩余天数,不包括节假日和工作日(周六、周日)

我已经成功地计算了不包括工作日在内的剩余天数,但只是停留在不包括国定假日的情况下。如何在计算剩余天数时排除这些法定假日

以下是代码:

var natDays=[]; 
natDays[0]=[1, 27];
natDays[1]=[2, 6];
natDays[2]=[3, 17];
natDays[3]=[2, 7]; 
function nationalDays(date) {
    for (i = 0; i < natDays.length; i++) {
        if (date.getMonth() == natDays[i][0] - 1
            && date.getDate() == natDays[i][1]) {
            return [false, natDays[i][2] + '_day'];
        }
    }
    return [true, ''];
}
function noWeekendsOrHolidays(date) {
    var noWeekend = $.datepicker.noWeekends(date);
    if (noWeekend[0]) {
        return nationalDays(date);
    } else {
        return noWeekend;
    }
}
function excludeWeekDaysOrHolidays(startDate, endDate) {
    if (endDate < startDate){
        return 0;
    }
    // Calculate days between dates
    var millisecondsPerDay = 86400 * 1000; // Day in milliseconds
    startDate.setHours(0,0,0,1);  // Start just after midnight
    endDate.setHours(23,59,59,999);  // End just before midnight
    var diff = endDate - startDate;  // Milliseconds between datetime objects    
    var days = Math.ceil(diff / millisecondsPerDay);
    // Subtract two weekend days for every week in between
    var weeks = Math.floor(days / 7);
    var days = days - (weeks * 2);
    // Handle special cases
    var startDay = startDate.getDay();
    var endDay = endDate.getDay();
    // Remove weekend not previously removed.   
    if (startDay - endDay > 1)         
    days = days - 2;      
    // Remove start day if span starts on Sunday but ends before Saturday
    if (startDay == 0 && endDay != 6)
        days = days - 1  
    // Remove end day if span ends on Saturday but starts after Sunday
    if (endDay == 6 && startDay != 0)
        days = days - 1  
    //check if National Holiday is in between two dates
    if (noWeekendsOrHolidays(date)[0]) {
        days=nationalDays(date);

    }   
    return days;
}
var natDays=[];
natDays[0]=[1,27];
natDays[1]=[2,6];
natDays[2]=[3,17];
natDays[3]=[2,7];
功能国家日(日期){
对于(i=0;i1)
天=天-2;
//如果跨度在周日开始,但在周六之前结束,则删除开始日
如果(开始日期==0&&endDay!=6)
天=天-1
//如果跨度在周六结束,但在周日之后开始,则删除结束日
如果(endDay==6&&startDay!=0)
天=天-1
//检查国庆节是否在两个日期之间
如果(现在或节假日(日期)[0]){
天数=国家天数(日期);
}   
返程天数;
}
任何帮助都将不胜感激

此外,我正在尝试以下代码:

diff=endDate-startDate;
var holi=new Array("02-25-2013","05-22-2013","06-28-2013");
p=0;
hcnt=0;
while(p<holi.length)
{
    holiday=new Date(holi[p]);
    //alert(holiday);
    if(diff>holiday-startDate)
        hcnt++;
        //alert(hcnt);
        p++;
    }
diff=结束日期开始日期;
var holi=新阵列(“02-25-2013”、“05-22-2013”、“06-28-2013”);
p=0;
hcnt=0;
while(pholiday起始日期)
hcnt++;
//警报(hcnt);
p++;
}
假日返回“无效日期”错误。hcnt始终显示0

试试这个:

new Date("YYYY-MM-DD");
而不是“MM-DD-YYYY”

就你而言:

var holi = new Array("2013-02-25", "2013-05-22", "2013-06-28");

第一个代码的哪一部分应该是第二个代码(解决方案)?或者您可以使用代码中的解决方案更新您的问题。谢谢或者你可以把它贴在小提琴上?谢谢