zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    从零开始学习SSH框架笔记之一 初识SSH框架及下载地址
    CentOS 6.0 升级内核步骤、方法
    解决Ubuntu详细信息中图形显示为未知的情况
    【Oracle XE系列之二】Oracle XE创建表空间、创建用户以及授权、查看权限
    排序算法大总结
    我的vimrc 设置
    你的c++学的怎么样?
    腾讯的笔试题一道
    一道递归算法题
    vc6 bug真多 写c++别用vc6
  • 原文地址:https://www.cnblogs.com/cm1236/p/5462485.html
Copyright © 2011-2022 走看看