87,992
社区成员
发帖
与我相关
我的任务
分享
function returnRealWorkTime(t_hour,t_min) {
var t = t_hour*100+t_min;
if (t < 800) return "8:00";
if (t > 1200 && t <1430) return "12:00";
if (t > 1730 ) return "17:30";
return t_hour + ':' + (t_min>9?"":"0") + t_min;
}
function test(t_hour1,t_min1) {
var correctHour=0,correctMin=0;
if (t_min1<=30) {
if(t_hour1<8){correctHour = 8;correctMin= 0;}
else if(8 <= parseInt(t_hour1) && parseInt(t_hour1) <12){correctHour = t_hour1;correctMin= t_min1;}
else if(12<= parseInt(t_hour1) && parseInt(t_hour1) <= 14){correctHour = 12;correctMin= 0;}
else if( 14<parseInt(t_hour1) && parseInt(t_hour1) <=17){correctHour = t_hour1;correctMin= t_min1;}
else {correctHour = 17;correctMin= 30;}
}
else { //if else t_min1>30
if(t_hour1<8){correctHour = 8;correctMin= 0;}
else if(8 <= parseInt(t_hour1) && parseInt(t_hour1) <12){correctHour = t_hour1;correctMin= t_min1;}
else if(12<= parseInt(t_hour1) && parseInt(t_hour1) < 14){correctHour = 12;correctMin= 0;}
else if( 14<=parseInt(t_hour1) && parseInt(t_hour1)<17){correctHour = t_hour1;correctMin= t_min1;}
else {correctHour = 17;correctMin= 30;}
}
return correctHour + ':' + correctMin;
}
function getWork(time1_hour,time1_min,time2_hour,time2_min) {
var timeA = test(time1_hour,time1_min);
var timeB = test(time2_hour,time2_min);
var Ha = timeA.split(":")[0];
var Ma = timeA.split(":")[1];
var Hb = timeB.split(":")[0];
var Mb = timeB.split(":")[1];
Ha=parseInt(Ha);Hb=parseInt(Hb);
Ma=parseInt(Ma);Mb=parseInt(Mb);
var dd,minutesDiff,output;
var pd1_1,pd1_2,pd2,pd3,pd4_1,pd4_2;
pd1_1 = Ha*60+Ma < Hb*60+Mb;
pd1_2 = Ha*60+Ma > Hb*60+Mb;
if(Ha<12 && Hb<12){if(pd1_1){output = Hb*60+Mb-(Ha*60+Ma);dd=0;}else{output = (17-Ha)*60+30-Ma-150+(Hb-8)*60+Mb;dd=-1;console.log('1');}}
else if(Ha<12 && Hb>12){output = Hb*60+Mb-(Ha*60+Ma)-150;dd=0;console.log('2');}
else if(Ha>12 && Hb<12){output =(Hb-8)*60+Mb+17*60+30-(Ha*60+Ma);dd=-1;console.log('3');}
else {if(pd1_1){output=Hb*60+Mb-(Ha*60+Ma);dd=0}else{output=(Hb-8)*60+Mb-150+17*60+30-(Ha*60+Ma);dd=-1;console.log('4');}}
return {'result':output,'dayDiff':dd};
}
这样对于时间A为2019/1/16 10:40:09,B为2019/1/18 8:39:12
通过调用var xx1 = getWork(10,40,8,39); //xx为{'result':299,'dayDiff':-1}
就可以计算出工作时间的时长了,1天4小时59分 (1=18-16+xx1.dd,4=parseInt(xx1.result/60),59=xx1.result%60).
我想请教大家能不能对我这个代码优化一下。