本帖最后由 u011120650 于 2014-08-20 09:01:00 编辑

解决方案 »

  1.   

      function jisuan(a,b){
      a = a.replace(/^\s*/gi,'');
      b = b.replace(/^\s*/gi,'');
      if (!/^\d{4}-\d{1,2}-\d{1,2}(?!\d)/gi.test(a) || !/^\d{4}-\d{1,2}-\d{1,2}(?!\d)/gi.test(b))
      {
      alert('非法的日期格式');
      return;
      }
      var d1_part = a.split('-');
      var d2_part = b.split('-');
      var d1 = new Date(d1_part[0],d1_part[1]*1-1,d1_part[2]);
      var d2 = new Date(d2_part[0],d2_part[1]*1-1,d2_part[2]);
      var j1 = d1>d2?d1:d2;
      var j2 = d1>d2?d2:d1;
      j1 = j1.getDay()==6?new Date(j1.getTime()-1*24*60*60*1000):(j1.getDay()==0?new Date(j1.getTime()-2*24*60*60*1000):j1);
      j2 = j2.getDay()==6?new Date(j2.getTime()+2*24*60*60*1000):(j2.getDay()==0?new Date(j2.getTime()+1*24*60*60*1000):j2);
      var sum = 0;
      //alert(j1.getDay() + '\n' +j2.getDay()+'\n'+j1 + '\n' + j2 + '\n' + sum);
      if (j1.getDay()>1)
      {
      sum += j1.getDay()-1;
      j1 = new Date(j1.getTime()-(j1.getDay()-1)*24*60*60*1000);
      }
      //alert(j1.getDay() + '\n' +j2.getDay()+'\n'+j1 + '\n' + j2 + '\n' + sum);
      if (j2.getDay()>1)
      {
      sum -= j2.getDay()-1;
      j2 = new Date(j2.getTime()-(j2.getDay()-1)*24*60*60*1000);
      }
      sum = (j1-j2)/24/60/60/1000/7*5+sum+1
      //alert(j1.getDay() + '\n' +j2.getDay()+'\n'+j1 + '\n' + j2 + '\n' + sum);
      return sum;
      }  alert(jisuan('2014-8-1','2014-8-31'));