输入开始时间和工作天数,计算结束时间,需考虑节假日周末和调休

<!-- 限制输入周六周末【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>





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值