您的位置:首页 > Web前端 > JavaScript

JavaScript 如何计算2个时间差 工作时间为8小时

2015-08-01 14:13 417 查看
/*
* 計算2個時間的時間差
*/

上班时间 07:20  16:00 或者 08:00 17:00 中间休息1小时 不包括法定节假日 只考虑星期天
这里 只放假星期日 星期6要上班的  命苦。。。。。。
function DateDiff()
{
var date1=dateFormat(Ext.getCmp("FromDate").getValue(),'Y-m-d H:i:s');//获取开始时间 这里是用的是ExtJs
var date2=dateFormat(Ext.getCmp("EndDate").getValue(),'Y-m-d H:i:s');//获取结束时间
var dTotal="";
if(date1!="")
{

var dt1 = new Date(Date.parse(date1.replace(/-/g, '/')));//转换成日期
var dt2 = new Date(Date.parse(date2.replace(/-/g, '/')));//转换成日期格式

var m1=dt1.getMonth();//返回表示月份的数字 (0,1,2,3...11)
var m2=dt2.getMonth();
var w1=dt1.getDay();
var w2=dt2.getDay();//返回表示星期的某一天的數字
var d1=dt1.getDate();//還回月份的某一天 (1...31)
var d2=dt2.getDate();
var st=dt1.getHours();//時間的小時的字段 {0.....23}
var et=dt2.getHours();
var min1=dt1.getMinutes();
var min2=dt2.getMinutes();
var dCount=0;
var dMin=0;
var dHour=0;
var dWeek=0;
var dMonth=0;
var dt=0;
try
{
if(m2-m1>0)
{
for(i=m1;i<m2;i++)//判断头尾月份总共多少天
{
dt+=Check_days(i);
}

dCount=dt+d2-d1;
}
else
{
dCount=d2-d1;//天數差
}

if(w2-w1<=0&&dCount>0)// 星期天 並且天數差大於0
{
dWeek=1;
}
else if(dCount>7)//天數差 7天以上
{
dWeek=parseInt(dCount/7);
}

dHour=et-st;//小時差
dMin=min2-min1;
if(min1=='20')
{
if(min2=='20')
{
dMin=(dMin)/60;
}
else
{
dMin=(dMin+20)/60;
}
}
else
{
dMin=dMin/60;
}
dTotal=(dCount-dWeek)*8+dHour+dMin;

if(st<12&&et>12)
{
dTotal= dTotal-1;//扣除午間休息一小時
}

Ext.getCmp("iTotal").setValue(dTotal);

}
catch (e)
{
return e.message;
}
}
}

// 核算某月有几天   0:1月 1:2月 2:3月。。。 这里不考虑2月有29天 也就是闰月的情况 不然太复杂
function Check_days(v)
{
var days=0;
switch(v)
{
case 0 :case 2 : case 4: case 6: case 7: case 9:case 11:
days=31;
break;
case 1:
days=28;
break;
case 3:case 5: case 8: case 10:
days=30;
break;
}
return days;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: