Примерно так должно работать:
$("#firstday, #lastday").datepicker({
onSelect: function (){
// Date will give time difference in miliseconds, that is why we divide with 1000*60*60*24
var firstday = new Date($("#firstday").val().split("/").reverse().join(","));
var lastday = new Date($("#lastday").val().split("/").reverse().join(",");
$("#totaldays").val((lastday - firstday) / 86400000);
}
});
В консоли узла выдает:
> x = new Date("18/5/2010".split("/").reverse().join(","))
Mon, 17 May 2010 22:00:00 GMT
> y = new Date("18/5/2015".split("/").reverse().join(","))
Sun, 17 May 2015 22:00:00 GMT
> x-y
-157766400000
> y-x
157766400000
> (y-x)/86400000
1826
- РЕДАКТИРОВАТЬ -
Когда у вас есть дата начала ичисло дней окончания выходных дней легко вычисляется с помощью метода getDay (), который возвращает 0 для воскресенья, 1 для понедельника ... 6 для субботы.
Вы можете использовать .getMonth () и .getDate ()в сочетании с несколькими другими {} условиями для праздников.
var weekend_count = 0;
for (i = firstday.valueOf(); i <= lastday.valueOf(); i+= 86400000){
var temp = new Date(i);
if (temp.getDay() == 0 || temp.getDay() == 6) {
weekend_count++;
}
}
и в конце вы просто делаете
$("#totaldays").val( (lastday - firstday) / 86400000 - weekend_count);
Просто чтобы сделать заметку в конце.Вероятно, вам следует экстраполировать этот код (как можно больше) в отдельную функцию, чтобы облегчить поддержку вашего кода и в случае, если вам понадобится та же функция в другом месте.
Удачи.