我已经创建了用于计算 2 次之间的代码,结果以分钟为单位。
如果没有过夜时间(例如:10:00
- 12:00
、14:00
- 16:00
)当我用 23:00
和 01:00
(晚上 11 点到凌晨 1 点)填充它时,问题就出现了,它返回负值并向后计数。您可以在下面的代码片段中看到我的代码。
有人知道如果有隔夜的话如何正常计算吗?或者如果没有日期就不可能?
function parseTime(s) {
var c = s.split(':');
return (parseInt(c[0]) * 60) + parseInt(c[1]);
}
function getTotalMin(x)
{
var awal = document.getElementById("awaljkab").value;
var akhir = document.getElementById("akhirjkab").value;
var selisih = parseTime(akhir) - parseTime(awal);
x.value = String(selisih);
}
<!-- input clock as HH:mm ; example: 10:00 -->
<input type="text" class="form-control timepicker" name="startjkab" id="awaljkab" />
<input type="text" class="form-control timepicker" name="finishjkab" id="akhirjkab" />
<input type="text" class="form-control" name="lamajkab" onfocus="getTotalMin(this);" readonly="readonly" />
最佳答案
在计算selisih
之前,您应该检查第二个小时是否小于第一个小时:
if (akhir < awal) akhir += 24 * 60;
这样您就可以确保 akhir
代表第二天。之后,您可以按照您的方式计算selih
。
关于Javascript计算时间,包括过夜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32370071/