Javascript 计算不包括工作日和节假日的天数

Javascript 计算不包括工作日和节假日的天数,javascript,Javascript,我知道这个问题被问了很多次,但请帮助我,我无法找到解决方案 使用下面的代码,我可以计算不包括工作日在内的天数 现在我还想排除公共假期,比如2012年8月15日、2012年9月12日、2012年12月20日,请帮忙 function namet() { var iWeeks, iDateDiff, iAdjust = 0; var nodays = document.getElementById("timestamp1").value; v

我知道这个问题被问了很多次,但请帮助我,我无法找到解决方案

使用下面的代码,我可以计算不包括工作日在内的天数

现在我还想排除公共假期,比如2012年8月15日、2012年9月12日、2012年12月20日,请帮忙

function namet()
 {

        var iWeeks, iDateDiff, iAdjust = 0;

        var nodays = document.getElementById("timestamp1").value;


        var nodays1 = document.getElementById("timestamp").value;



        var dDate1 = new Date(nodays1);



        var dDate2 = new Date(nodays);





        if (dDate2 < dDate1) {

            alert("End Date : Enter date more than Start Date ");
        }
        // error code if dates transposed

        var iWeekday1 = dDate1.getDay(); // day of week



        var iWeekday2 = dDate2.getDay();
        iWeekday1 = (iWeekday1 == 0) ? 7 : iWeekday1; // change Sunday from 0 to 7
        iWeekday2 = (iWeekday2 == 0) ? 7 : iWeekday2;
        if ((iWeekday1 > 5) && (iWeekday2 > 5)) iAdjust = 1; // adjustment if both days on weekend
        iWeekday1 = (iWeekday1 > 5) ? 5 : iWeekday1; // only count weekdays
        iWeekday2 = (iWeekday2 > 5) ? 5 : iWeekday2;

        // calculate differnece in weeks (1000mS * 60sec * 60min * 24hrs * 7 days = 604800000)
        iWeeks = Math.floor((dDate2.getTime() - dDate1.getTime()) / 604800000)

        if (iWeekday1 <= iWeekday2) {
          iDateDiff = (iWeeks * 5) + (iWeekday2 - iWeekday1)
        } else {
          iDateDiff = ((iWeeks + 1) * 5) - (iWeekday1 - iWeekday2)
        }

        iDateDiff -= iAdjust // take into account both days on weekend

        var final = (iDateDiff + 1); // add 1 because dates are inclusive

        document.leaveapplication.noofdays3.value = final;
函数名()
{
var iWeeks、iDateDiff、Idejust=0;
var nodays=document.getElementById(“timestamp1”).value;
var nodays1=document.getElementById(“timestamp”).value;
var dDate1=新日期(nodays1);
var dDate2=新日期(nodays);
如果(dDate25)和&(iWeekday2>5))iAdjust=1;//如果两天都在周末,则进行调整
iWeekday1=(iWeekday1>5)?5:iWeekday1;//仅统计工作日
iWeekday2=(iWeekday2>5)?5:iWeekday2;
//以周为单位计算差异(1000毫秒*60秒*60分钟*24小时*7天=60480万)
iWeeks=Math.floor((dDate2.getTime()-dDate1.getTime())/604800000)

如果(iWeekday1您需要一份属于工作日的假期列表

  • 计算开始和结束之间的天数
  • 计算开始和结束之间的周末(天数模7,然后调整最后一周的位置)
  • 数一数列表中日期之间的所有假期,然后再减去

  • 什么是公共假日。您需要具体说明。它因时间、国家而异。我假设您的意思是“不包括周末和假日”,因为假日通常在工作日。是的,比如说公共假日是:2012年8月15日、2012年9月20日、2012年12月20日,也不包括星期六和星期日亲爱的Phil,我如果可能的话,请您修改代码,这将排除工作日和节假日,请发送完整的代码,请帮助