<!-- 限制输入周六周末【disabledDays:[0,6]】 且 只能输入今天及今天以后【minDate:'%y-%M-{%d}'】 -->
<input id="beginTime" class="Wdate" type="text" onFocus="WdatePicker({minDate:'%y-%M-{%d}'})" >
<br><br>
<input type='text' id="d" οnblur="endTime(this.value)"/>
<br><br>
<input type='text' id="endTime" type="text" readonly/>
<script type="text/javascript">
function endTime(day){
//开始时间
var beginTime = document.getElementById("beginTime").value;
document.getElementById("endTime").value = getWorkDayCount(beginTime,day);
}
//法定节假日和调休日的设定
var Holiday = ["2017-10-1", "2017-10-2", "2017-10-3","2017-10-4","2017-10-5", "2017-10-6", "2017-10-7", "2017-10-8"];
//虽然是周末但是还是要上班的【调休】
var WeekendsOff = ["2017-9-30"];
//“2017-10-09”+12
function addDate(dateTemp,days){
var dateTemp = dateTemp.split("-");
var nDate = new Date(dateTemp[1] + '-' + dateTemp[2] + '-' + dateTemp[0]); //转换为MM-DD-YYYY格式
var millSeconds = Math.abs(nDate) + (days * 24 * 60 * 60 * 1000);
var rDate = new Date(millSeconds);
var year = rDate.getFullYear();
var month = rDate.getMonth() + 1;
if (month.length==1) month = "0" + month;
var date = rDate.getDate();
if (date.length==1) date = "0" + date;
return (year + "-" + month + "-" + date);
}
function getWorkDayCount (beginDate, workDay) {
/*
功能:计算一段时间内工作的天数。不包括周末和法定节假日,法定调休日为工作日,周末为周六、周日两天;
参数:
beginDate -时间段开始日期;
workDay -工作时间;
*/
var begin = beginDate;
var count = 0;
for(var i = 0;i<365;i++){
beginDate = addDate(begin,i);
var arys1= new Array();
arys1=beginDate.split('-'); //日期为输入日期,格式为 2013-3-10
var ssdate=new Date(arys1[0],parseInt(arys1[1]-1),arys1[2]);
var day = ssdate.getDay();
//1、判断输入的开始时间是不是周末
if(day==6 || day==0){
//是周末 不是调休 是节假日
if(WeekendsOff.toString().indexOf(beginDate)==-1){
continue;
}else{
count++;
}
}else{
if(Holiday.toString().indexOf(beginDate)!=-1){
continue;
}else{
count++;
}
}
if(count==workDay) break;
};
//结束时间
return beginDate;
};
</script>
输入开始时间和工作天数,计算结束时间,需考虑节假日周末和调休
最新推荐文章于 2023-01-07 17:30:54 发布