在jquery UI datepicker中计算两个日期之间的剩余天数(不包括国家假日)
我需要使用jQueryUIDatePicker计算两个日期之间的剩余天数,不包括节假日和工作日(周六、周日) 我已经成功地计算了不包括工作日在内的剩余天数,但只是停留在不包括国定假日的情况下。如何在计算剩余天数时排除这些法定假日 以下是代码:在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) {
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");
第一个代码的哪一部分应该是第二个代码(解决方案)?或者您可以使用代码中的解决方案更新您的问题。谢谢或者你可以把它贴在小提琴上?谢谢