2013-12-12 93 views
0

我需要计算时差24小时时间。 有些事情似乎是错误的代码计算从时间差 - 总工作时间

if (shiftToMin >= shiftFromMin){ 
     shiftTotalMin = shiftToMin - shiftFromMin; 
     if(shiftFromHr < shiftToHr){ 
      shiftTotalHr = shiftToHr - shiftFromHr; 
     }else{ 
      shiftTotalHr = (24 - shiftFromHr) + shiftToHr; 
     } 
    }else{ 
     shiftTotalMin = 60 - (shiftFromMin - shiftToMin); 
     if(shiftFromHr < shiftToHr){ 
      shiftTotalHr = ShiftToHr - shiftFromHr; 
     }else{ 
      shiftTotalHr = (24 - shiftFromHr) + shiftToHr; 
     } 
     shiftTotalHr = shiftTotalHr - 1; 
    } 
+0

精品!输出是什么?期望的输出是什么? #ThingsWeNeedToKnow –

+0

时间差喜欢,总工作时间 – epynic

回答

0

制定并工作

// Time Difference Cal 
     if (shiftFromHr <= shiftToHr){ 
      shiftTotalHr = shiftToHr - shiftFromHr; 
     }else{ 
      shiftTotalHr = (24 - shiftFromHr) + shiftToHr; 
     } 

     if (shiftFromMin <= shiftToMin){ 
      shiftTotalMin = shiftToMin - shiftFromMin; 
     }else{ 
      shiftTotalMin = 60 - (shiftFromMin - shiftToMin); 
      shiftTotalHr = shiftTotalHr - 1; 
     } 
// Total time difference shiftTotalHr : shiftTotalMin 

Thanks All :)

1

向我们展示你的full code了解,如果你想calculatetwo datestime difference的试试这个,

function time_diff(start, end) { 
    sdate = new Date(start);edate = new Date(end); 
    var sd = [];var ed = []; 
    sd[0] = sdate.getFullYear(); 
    sd[1] = sdate.getMonth(); 
    sd[2] = sdate.getDate(); 
    sd[3] = sdate.getHours(); 
    sd[4] = sdate.getMinutes(); 
    ed[0] = edate.getFullYear(); 
    ed[1] = edate.getMonth(); 
    ed[2] = edate.getDate(); 
    ed[3] = edate.getHours(); 
    ed[4] = edate.getMinutes(); 
    var startDate = new Date(sd[0], sd[1], sd[2], sd[3], sd[4], 0); 
    var endDate = new Date(ed[0], ed[1], ed[2], ed[3], ed[4], 0); 
    var diff = endDate.getTime() - startDate.getTime(); 
    var hours = Math.floor(diff/1000/60/60); 
    diff -= parseInt(hours) * 1000 * 60 * 60; 
    var minutes = Math.floor(diff/1000/60); 
    if (hours < 0) { 
     return 'error'; 
    } 
    return (hours <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes; 
} 
alert(time_diff('12/11/2013 10:25:00', '12/12/2013 11:25:00')); 
alert(time_diff('12/12/2013 10:25:00', '12/12/2013 11:50:00')); 

Demo

+0

嘿,伙计,感谢您的照顾和时间,Ur真棒,我将需要此代码有一天 – epynic

1

使用date构造函数的getTime方法。它提供了通过毫秒的总数(自1970年以来,我认为)

var shiftStart = new Date(0,0,0,shiftFromHour,shiftFromMin); 
var shiftEnd = new Date(0,0,0,shiftToHour,shiftToMin);  
var msDiff = shiftEnd.getTime()-shiftStart.getTime(); 
var hours = Math.floor(msDiff/(1000*60*60)); 

hours将包含工时数shiftStartshiftEnd之间(均为Date实例)

+0

忘记提及,shiftToHr,shiftToMin ...是从文本框val() – epynic

+0

固定(假设shiftTo ....等都是整数) – tewathia