cjwlz 2015-08-11 08:54 采纳率: 0%
浏览 6645

求教js,计算当前时间后5个工作日,要求除去国家法定节假日!

以下代码只能除去双休日,没有除去法定节假日。
/**

  • 获取某日期后几个工作日后的日期
  • 参数:date:给定日期;itervalByDay:相隔工作日
  • @author xxx
  • 创建时间 2015-06-25
    */
    function getworkday(dat,itervalByDay){

    var str=dat.split("-");
    var date=new Date();
    date.setUTCFullYear(str[0], str[1] - 1, str[2]);
    date.setUTCHours(0, 0, 0, 0);
    var millisceonds =date.getTime();
    for(var i=1;i<=itervalByDay;i++){
    millisceonds +=24*60*60*1000;
    date.setTime(millisceonds);
    if(date.getDay()==0||date.getDay()==6) i--;
    }

    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var rq = year + "-" + formatTen(month) + "-" + formatTen(day);

    return rq;
    }

  • 写回答

2条回答 默认 最新

  • danielinbiti 2015-08-11 09:36
    关注
     <!DOCTYPE html>
    <html>
    <head> 
    </head>
    <body>
    
    <script>
    var holiday= ['2015-01-01','2015-01-02','2015-01-03','2015-01-08'];
    var holidayMap={};
    function getMap(hd){
       for(var i=0;i<hd.length;i++){
          holidayMap[hd[i]]='1';
       }
    }
    function formatTen(f){
      if (parseInt(f,10)<10){
          return '0'+f;
      }
      return f;
    }
    function formateDate(date){   
    var year = date.getFullYear(); 
    var month = date.getMonth() + 1; 
    var day = date.getDate(); 
    return year + "-" + formatTen(month) + "-" + formatTen(day);
    }
    function getworkday(dat,itervalByDay){
    var str=dat.split("-");
    var date=new Date(); 
    date.setUTCFullYear(str[0], str[1] - 1, str[2]); 
    date.setUTCHours(0, 0, 0, 0); 
    var millisceonds =date.getTime();
    for(var i=1;i<=itervalByDay;i++){
       millisceonds +=24*60*60*1000;
       date.setTime(millisceonds);
    
       if(date.getDay()==0||date.getDay()==6){
         i--;
       }else{//过滤节假日
         var d=formateDate(date);
         if(holidayMap[d]){
            i--;
         }
       }
    }
    
    var year = date.getFullYear(); 
    var month = date.getMonth() + 1; 
    var day = date.getDate(); 
    var rq = year + "-" + formatTen(month) + "-" + formatTen(day);
    
    return rq;
    }
    getMap(holiday);
    var r = getworkday('2015-1-1',5);
    alert(r);
    </script>
    </body>
    </html>
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线