js计算工作日(除星期六和星期天不计算)内

本文提供了一个使用JavaScript编写的计算两个指定日期间的工作日数量的脚本。该脚本能够排除周末和预先定义的假期,并提供了用户输入起始日期和结束日期的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>假日?算</title>
<script language="javascript">
//假日表
var holidays = new Array();
holidays[holidays.length] = new Date("2009/10/06");
holidays[holidays.length] = new Date("2009/10/10");

function getWorkDays(){
var dd = document.getElementById("days");
var startDate=document.getElementById("dateFrom").value;
var obj= new Array(); //定?一??
var obj= startDate.split("-");
var startDate1=obj[0]+"/"+obj[1]+"/"+obj[2];
var endDate =document.getElementById("dateTo").value;
var objEnd= new Array(); //定?一??
var objEnd = endDate.split("-");
var endDate1=objEnd[0]+"/"+objEnd[1]+"/"+objEnd[2];

dd.value=calculateWorkDays(startDate1,endDate1,holidays);
}

function calculateWorkDays(fromStr, toStr,holidayArray){
var from = new Date();
var to = new Date();
var fromTime = Date.parse(fromStr);
var toTime = Date.parse(toStr);
from.setTime(fromTime);
from.setHours(0);
from.setMinutes(0);
from.setSeconds(0);
var orgTime = from.getTime();

to.setTime(toTime);
to.setHours(0);
to.setMinutes(0);
to.setSeconds(0);

if(from.getTime() > to.getTime()){
return 0;
}
//把起始日都修正到星期六 javascript的星期?0?始,所以+1??理
var sDayofWeek = from.getDay()+1;
var workdays=0;

if(sDayofWeek > 1 && sDayofWeek < 7)
{
from.setDate(from.getDate()-(sDayofWeek%7));
workdays-=((sDayofWeek-2)>0)?sDayofWeek-2:0;
}
//?算??日期之?的天?

var totalDays = (to.getTime()-from.getTime())/(1000*60*60*24)+1;
workdays+=Math.floor(totalDays/7)*5;

//修正最后剩余天?
if((totalDays%7-2)>0){
workdays+=(totalDays%7-2);
}

if(holidayArray!=null){
for(var i=0;i<holidayArray.length;i++){
if(holidayArray[i].getTime()>orgTime && holidayArray[i].getTime()<to.getTime()){
if(holidayArray[i].getDay()>0 && holidayArray[i].getDay()<6){
workdays--;
}
}
}
}

return workdays;
}



</script>
</head>
<body>
<form>
?<input type="text" id="dateFrom" name="fromDate" value="2009-08-06" size="10">
到<input type="text" id="dateTo" name="toDate" value="2009-08-07" size="10">
有<input type="text" id="days" name="days" value="" size="5">?工作日
<input type="button" name="BT" value="?算工作日" onclick="getWorkDays()">
</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值