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     }
时间: 2024-10-25 19:22:22

js计算两个时间范围间的间隔秒数的相关文章

js计算两个时间相差的天数

day1='2014-03-31 00:00:01'; function get_day(day1,day2){ var s = day1; var dt = Date.parse(s.replace(/-/g,"/")); var day1 = new Date(dt); var s = day2; var dt = Date.parse(s.replace(/-/g,"/")); var day2 = new Date(dt); var date3=day1.g

JS计算两个日期之间的天数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

js 计算两个日期间的天数

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

js 计算两个时间的差

比如得到两个时间的字符串 2013-01-21 11:10:49   2013-01-21 11:14:43,要用后面的时间减去前面的时间 直接上代码 var begen = new Date(value[0]["createtime"]) var end = new Date(value[i]["createtime"]) var cha = end.getTime()-begen.getTime(); console.log(cha); console.log(

JS计算两时间差

//JS计算两时间差 //startDate:开始时间,endDate:结束时间(时间格式如:2018-5-18 11:51:40的字符串) function calDateDiffFn(startDate, endDate) { //时间差的毫秒数 var millSecsDiff = new Date(endDate).getTime() - new Date(startDate).getTime(); //计算出相差天数 var daysDiff = Math.floor(millSecs

js计算两个日期的天数差值

js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Number}天数 */ function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2006-12-18格式 var aDate, oDate1, oDate2, iDays aDate = sDate1.split("-") oDate1 = new

JS计算两个日期时间之差之天数不正确

做了一个时间倒计时,发现天数总是不正确. js代码: 1 //定义目标日期 2 var targetTime = new Date(); 3 4 //目标日期 5 targetTime.setFullYear(2015,5,1); 6 7 //目标时 8 targetTime.setHours(12); 9 10 //目标分 11 targetTime.setMinutes(0); 12 13 //目标秒 14 targetTime.setSeconds(0); 15 16 //目标毫秒 17

微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

转载注明出处 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时器的小时和分钟.唯一的缺点就是不能选择秒. 一开始的想法是选择的到一个字符串以后,截取字符串转换成数字然后和以前一样不停的计算.什么计算秒数,换算成分数啊之类的 想想虽然不难但还是太麻烦了.就想有没有简单易懂的实现方法. 首先想到的就是js中的Date() 因为这个函数可以传字符串获取毫秒数,传毫秒数获取字符串.那么总体上来看,应该是可行的. 思路: 首先我们的

JS - 计算两个数组的交集、差集、并集、补集(多种实现方式)

方法一:最普遍的做法 使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本.也不用引入其他第三方库. 1,直接使用 filter.concat 来计算 var a = [1,2,3,4,5] var b = [2,4,6,8,10] //交集 var c = a.filter(function(v){ return b.indexOf(v) > -1 }) //差集 var d = a.filter(function(v){ return b.index