js计算两个时间范围间的间隔秒数

最近在一个项目中,需要计算两个时间段之前间隔的时间秒数,这里把代码记录下来。代码很简单,主要是需要逻辑清楚,因为有几种情况需要区分,放在这里分享下。

 1 function weekend(time1,time2){
 2         //计算时间间隔,除去周末和非工作时间
 3         if(time1!=null&&time2!=null){
 4             debugger;
 5             var timesstart1=Date.parse(time1);
 6             var dat1=new Date(timesstart1);
 7             var dat1str=dat1.getFullYear()+"-"+(dat1.getMonth()+1)+"-"+dat1.getDate()+" "+dat1.getHours()+":"+dat1.getMinutes()+":"+dat1.getSeconds();
 8             var day1=dat1.getFullYear()+"-"+(dat1.getMonth()+1)+"-"+dat1.getDate()+" 17:30:00";//下发时间的当天17:30
 9             if(Date.parse(dat1str)>Date.parse(day1)){
10                 var entDays=54000000;//17:30到8:30的时间戳
11                 timesstart1=Date.parse(day1)+entDays;//如果下发时间大于下班时间,下发时间改成第二天的8:30
12             }
13             var timeend2=Date.parse(time2)+1000;
14             var dat2=new Date(timeend2);
15             var day2=dat2.getFullYear()+"-"+(dat2.getMonth()+1)+"-"+dat2.getDate()+" 08:30:00";//接受任务的当天8:30
16             var formatday1=Date.parse(day1);
17             var formatday2=Date.parse(day2);
18             if(day1.substring(0,10)==day2.substring(0,10)){
19                 return ((timeend2-timesstart1)/1000);//下发时间和接受时间是同一天
20             }else{
21                 var todaySS=formatday1-timesstart1;//下发时间到17:30的秒数
22                 var tomorrowSS=timeend2-formatday2;//接受时间到08:30的秒数
23                 var dayS=86400000;
24                 var dayWork=32400000;//一天的秒数
25                 var intervalS=(timeend2-timesstart1)/dayS;
26                 var cnt=intervalS/7;//几个整周
27                 var mdays=intervalS-7*cnt;//余下的天数
28                 cnt=cnt*2;//一周有两天,n周就有n*2天
29                 var n=new Date(time1).getDay();//那一天是周几
30                 if(n+mdays>7){
31                     cnt=cnt+2;
32                 }if(n+mdays==7){
33                     cnt++;
34                 }
35                 var dayN=Math.floor(intervalS-cnt);//几个整天
36                 return ((todaySS+dayN*dayWork+tomorrowSS)/1000);
37             }
38         }else return 0 ;
39     }
原文地址:https://www.cnblogs.com/cm1236/p/5462485.html