<%
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' 函数名: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"))
%>
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' 函数名: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"))
%>
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>
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>
用循环如果时间长的话会不会开销太大啊
看看这个行不行:
<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>