Javascript Jquery-计算时间表小时数

Javascript Jquery-计算时间表小时数,javascript,jquery,Javascript,Jquery,我正在开发一个时间表项目,但在计算开始时间和结束时间之间存在问题 基本上,我希望显示的结果是(4.5小时),而不是基于 开始时间:上午7:30,结束时间12:00 <td><input type="time" class="dataInput" id="sMon" onchange="checkHoursTyped(this);SumHours();calTotalHours();" /></td> <td><input class="dat

我正在开发一个时间表项目,但在计算开始时间和结束时间之间存在问题

基本上,我希望显示的结果是(4.5小时),而不是基于

开始时间:上午7:30,结束时间12:00

<td><input type="time" class="dataInput" id="sMon" onchange="checkHoursTyped(this);SumHours();calTotalHours();" /></td>
<td><input class="dataInput" id="fMon" onchange="checkHoursTyped(this);SumHours();calTotalHours();"/></td>

function SumHours(){
    var monStart = 0;
    var monFinish = 0;

    monStart = Number($("#sMon").val().replace(/:/g,"."));
    monFinish = Number($("#fMon").val().replace(/:/g,"."));

    var workedHoursM = monFinish -= monStart;

    $("#hoursMon").val(workedHoursM);
}

函数SumHours(){
var-monStart=0;
var-monFinish=0;
monStart=Number($(“#sMon”).val()。替换(/:/g,“.”);
monFinish=编号($(“#fMon”).val()。替换(/:/g,“.”);
var workedHoursM=monFinish-=monStart;
$(“#hoursMon”).val(工作小时数);
}

代码的问题在于,您正在将
7:30
转换为
7.3
,并将分钟分量视为十进制分量,而不是十进制分量(它们是60分之一的分数,相当于一小时)。这里的一种方法是使用regex隔离分钟组件,然后将其转换回小时

函数SumHours(){
var monStart=“7:30”;
var regexp=/(\d+):(\d+)/g;
var match=regexp.exec(monStart);
var start=match[1]*1.0+(match[2]/60.0);
var monFinish=“12:00”;
var regexp=/(\d+):(\d+)/g;
var match=regexp.exec(monFinish);
var端=匹配[1]*1.0+(匹配[2]/60.0);
var workedHoursM=结束-开始;
console.log(工作小时数);
//在实际代码中,进行以下JQuery赋值
//$(“#hoursMon”).val(工作小时数);
}
SumHours()这是另一种方式:

函数SumHours(){
var smon=document.getElementById('smon').value;
var fmon=document.getElementById('fmon')。值;
var-diff=0;
if(smon和fmon){
smon=转换秒(smon);
fmon=转换秒(fmon);
diff=Math.abs(fmon-smon);
log('时差为:'+secondsTohhmmss(diff));
}
函数ConvertToSeconds(时间){
var splitTime=time.split(“:”);
返回拆分时间[0]*3600+拆分时间[1]*60;
}
功能秒至hhmms(秒){
var小时=parseInt(秒/3600);
var seconds=parseInt(秒%3600);
var分钟=parseInt(秒/60);
返回(分钟===30)?(小时+“.+5):(小时+”小时:“+分钟+”分钟);
}
}


您是否意识到
7.3
小时数与
7:30
小时数不同?您是否只想将每个结果四舍五入为整数和0.5?现在我们不明白你在找什么好问题,我需要先把时间转换成小数位吗?从7:30改为7.5?非常感谢!只需要调整一点代码,但它的工作!!