<% 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''    函数名:WorkingDay(day_star,day_end)                     '''
'''    功  能:计算一个时间段里面的工作日(每周去掉周六,周日)    '''
'''    参  数:day_star:时间段的起始时间,时间格式:yyyy-mm-dd    '''
'''           day_end:时间段的结束时间,时间格式:yyyy-mm-dd     '''
'''    返回值:返回工作日的值                                   '''
'''    作  者:Eyun(艺云):http://www.eyun.org
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function WorkingDay(day_star,day_end)
dim weeks,week_star,week_end
weeks=datediff("ww",day_star,day_end,2) '把星期一作为一个星期
'的开始,判断有几个星期
week_end=weekday(day_end,2) '判断开始那天为星期星期几
if week_end=7 or week_end=6 then '当星期六,日时调整
week_end=5
end if
week_temp=weekday(day_star,2) '判断结束那天为星期星期几
if week_temp=7 then '当星期六,日时调整
week_temp=6
end if
week_star=6-week_temp
WorkingDay=(weeks-1)*5+week_star+week_end
end function
response.Write(WorkingDay("2005-04-29","2005-06-01"))
%>

解决方案 »

  1.   

    <script language=javascript>var d=new Date("2005/02/02");
    var d2=new Date("2005/03/19");
    var t;
    t=weekCount(d,d2);
    document.write(t);
    ///////////////////////////
    function weekCount(dStart,dEnd)
    {
        var iSatCount = 0;
        var iSunCount = 0;
    var sumDay = 0;
        do{
            if(dStart.getDay()==6 || dStart.getDay()==0)
      iSatCount++;
     else
      sumDay++;
            dStart.setDate(dStart.getDate()+1);
        }while(dStart.getTime()<=dEnd.getTime())
        return sumDay;
    }
    </script>
      

  2.   

    <script language=javascript>
    var ma=new Date("2005/1/1")
    var ma2=new Date("2006/1/1")
    var num=0
    while(ma.getTime()<ma2.getTime())
    {
    if(ma.getDay()!=0 && ma.getDay()!=6)
    {
    num++
    }
    ma.setDate(ma.getDate()+1)
    }
    document.write(num)
    </script>
      

  3.   

    看错了,写了个vbscript的
    用循环如果时间长的话会不会开销太大啊
    看看这个行不行:
    <script>
    //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    //''''   函数名:WorkingDay(day_star,day_end)                              ''''
    //''''   功  能:计算一个时间段里面的工作日(每周去掉周六,周日)             ''''
    //''''   参  数:day_star:时间段的起始时间,时间格式:yyyy/mm/dd             ''''
    //''''          day_end:时间段的结束时间,时间格式:yyyy/mm/dd              ''''
    //''''   返回值:返回工作日的值                                            ''''
    //''''   作  者:Eyun(艺云):http://www.eyun.org                            ''''
    //''''   时  间:2005-06-14                                                ''''
    //''''   环  境:javascript                                                ''''
    //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    function WorkingDay(day_star,day_end){
    var week_end,week_star,days,weeks,remain,work_days;
    day_star=new Date(day_star);
    day_end=new Date(day_end);
    days=(day_end.getTime()-day_star.getTime())/(24*60*60*1000)+1;
    //alert(days);
    //alert(days/7);
    weeks=Math.floor(days/7);
    remain=days%7;
    //alert("rmain:"+remain);
    week_star=day_star.getDay();
    week_end=day_end.getDay();
    //alert("week:"+weeks);
    if(week_end==0||week_end==6)week_end=5;
    if(week_star==0||week_star==6)week_star=1;
    //alert("star:"+week_star);
    //alert("end:"+week_end);
    if(week_end<week_star)week_end+=5;
    if(week_end==5&&week_star==1)week_end=week_star-1;
    remain=week_end-week_star+1;
    work_days=weeks*5+remain;
    alert(work_days);
    }
    </script><a href="#" onClick="WorkingDay('2004/6/12','2005/6/25')">查看函数运行结果</a>