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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM