如何在jquery中排除周末?

如何在jquery中排除周末?,jquery,Jquery,我选择了两个日期 起始日期:年月日 今日:年月日 所以我想要的功能应该排除周末,所以我尝试了这个 function onblur(event){ GetDaysBetweenDates(); } function GetDaysBetweenDates(){ if(document.getElementById('datepicker3').value != ""){ var fromDate = new

我选择了两个日期

起始日期:年月日

今日:年月日

所以我想要的功能应该排除周末,所以我尝试了这个

  function onblur(event){
      GetDaysBetweenDates();
  }

      function GetDaysBetweenDates(){     
          if(document.getElementById('datepicker3').value != ""){
              var fromDate = new Date(document.getElementById('datepicker2').value);
              var toDate = new Date(document.getElementById('datepicker3').value);        
              var timeDiff = Math.abs(toDate.getTime() - fromDate.getTime());
              var days = Math.ceil(timeDiff / (1000 * 3600 * 24));  

              if(days){
                    // Subtract two weekend days for every week in between
                    var weeks = Math.floor(days / 7);
                    days = days - (weeks * 2);

                    // Handle special cases
                    var startDay = fromDate.getDay();
                    var endDay = toDate.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;
                }

              $("#txtno_of_leaves").val(diffDays);
          }
      }
但是这个不行。

试试这个

function workingDaysBetweenDates(startDate, endDate, getWorkingDays) {

    startDate = new Date(startDate);
    endDate = new Date(endDate);

    // Validate input
    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);

    if(getWorkingDays){
        // Subtract two weekend days for every week in between
        var weeks = Math.floor(days / 7);
        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;
    }
    return days;
}

workingDaysBetweenDates(start_date, end_date, true);
日期之间的函数工作日(开始日期、结束日期、获取工作日){ startDate=新日期(startDate); endDate=新日期(endDate); //验证输入 如果(结束日期<开始日期) 返回0; //计算日期之间的天数 var millissecondsPerday=86400*1000;//以毫秒为单位的天 startDate.setHours(0,0,0,1);//午夜后开始 endDate.setHours(23,59,59999);//在午夜前结束 var diff=endDate-startDate;//日期时间对象之间的毫秒数 变量天数=数学单元(差/毫秒/日); 如果(getWorkingDays){ //中间每周减去两个周末 var周=数学下限(天/7); 天=天-(周*2); //处理特殊情况 var startDay=startDate.getDay(); var endDay=endDate.getDay(); //删除以前未删除的内容。 如果(开始日期-结束日期>1) 天=天-2; //如果跨度在周日开始,但在周六之前结束,则删除开始日 如果(开始日期==0&&endDay!=6) 天=天-1; //如果跨度在周六结束,但在周日之后开始,则删除结束日 如果(endDay==6&&startDay!=0) 天=天-1; } 返程天数; } 日期之间的工作日(开始日期、结束日期、真); 这是工作小提琴:


日期格式需要是以下格式之一:
04/24/2014
2014-04-24

@user3448105它解决了您的问题吗?让我知道,如果你面临任何问题,我已经更改了一些代码,以使我的方式无法工作。可以指出我的错误吗?检查
days
变量在
if(diffDays)
@user3448105中未定义,同时确保你有
startDate.setHours(0,0,1)//午夜后开始
endDate.setHours(23,59,59999);//在午夜前结束
语句,以获得确切的日差。让我们看看它是否对您有效?如果它对您有效,也请向上投票