我有一个在线表格,用户输入到达时间,完成时间,花费的小时数,税率,然后是费率。这很好但如果我们已经进入到达时间和完成时间,我应该可以自动获得时间。
实施例
如果一个人在上午11:00到达某个地点并在下午1:00离开,则总时数应为2.00。
如果一个人在下午5:30到达某个地点并在晚上7:30离开,则总时数应为2.30。
我需要这样做,但我遇到了问题:
HTML
<input type="text" name="start" id="start" placeholder="start"> <br>
<input type="text" name="end" id="end" placeholder="end" ><br>
<input type="text" name="hours" id="hours" placeholder="hours"><br>
的Javascript
$(document).ready(function() {
myFunction();
$("#start, #end").on("keydown keyup", function() {
myFunction();
});
});
function myFunction() {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
s = start.split(':');
e = end.split(':');
min = e[1]-s[1];
hour_carry = 0;
if(min < 0){
min += 60;
hour_carry += 1;
}
hour = e[0]-s[0]-hour_carry;
min = ((min/60)*100).toString()
diff = hour + "." + min.substring(0,2);
document.getElementById("hours").value = diff;
}
答案 0 :(得分:0)
如果小时数超过12:00,则您遇到的问题是负数。
以下是修复它的代码,它假设下一次出现小时而不是之后。例如:5:30-4:30将是11小时,而不是23小时。它会考虑上午5:30 - 下午4:30或下午5:30 - 凌晨4:30(在您的场景中看起来并不重要)。
s = start.split(':');
e = end.split(':');
for(var i=0;i<s.length;i++) {
s[i] = parseFloat(s[i]);
}
for(var i=0;i<e.length;i++) {
e[i] = parseFloat(e[i]);
}
if(s[0] > e[0]) {
s[0] = s[0] - 12;
console.log("true");
}
确保将数字解析为浮点值。然后,如果开始时间大于结束时间,则从开始时间减去12。