js判断两个日期之间相差的工作日

分为三步。

       第一步:获取原始日期后进行格式化,最终格式化为2019/7/25的格式。

    //在Jquery里格式化Date日期时间数据
    function timeStamp2String(time){
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        //var hour = datetime.getHours()< 10 ? "0" + datetime.getHours() : datetime.getHours();
        //var minute = datetime.getMinutes()< 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        //var second = datetime.getSeconds()< 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
        //return year + "-" + month + "-" + date+" "+hour+":"+minute+":"+second;
        return year + "/" + month + "/" + date;
    }    

 

  第二步:计算相差的日期的方法                 

                   function countWorkDay(sDay,eDay){
        var s =   sDay;
        var e =   eDay;
        var s_t_w = s.getDay(), e_t_w = e.getDay();
        //相差天数
        var diffDay = (e - s) / (1000 * 60 * 60 * 24) + 1;
        //如果开始日期为周六或者周日 需要调整相差天数
        var diffWeekDay = diffDay - (s_t_w ==0?1:0)- (s_t_w ==6?2:0);
        //计算有几个完整的周
        var weeks = Math.floor(diffWeekDay / 7); //向下整除 4/3=1;
        var i =  weeks*5 + (e_t_w==6?5:e_t_w) + ( s_t_w >= 1 && s_t_w <= 5 ? (6-s_t_w):0);
        var x = diffDay - weeks*2;
        if(i<=x){
            return i;
        }else {
            if(e_t_w==6){
                x=x-1;
            }
            return x;
        }
    }

 

第三步:调用:

           var x = countWorkDay(new Date(row.F_DATE_CREATE.split(" ")[0]) , new Date(timeStamp2String(new  Date().getTime())));

 

传入的参数需要是Date,需将处理完的String转为Date再传入。

 

 

PS:这是参考了网上大佬的代码。可是一不小心把出处关掉了。记录下,默默感谢

你可能感兴趣的:(javascript)