我在计算以 HH:mm 字符串表示的三个时间值之间的时间(小时:分钟)差异时遇到问题。
我从上类时间、午餐时间和下类时间计算一天的工作时间。
例如 var time_worked = time_out - 午餐 - time_in 或 07:00 = 17:00 - 01:00 - 09:00
我熟悉 php 日期,但 javascript 日期对象很可怕!
代码:
var time_in = $(".time-in").val(); // 09:00
var time_out = $(".time-out").val(); // 17:00
var lunch = $(".lunch").val(); // 01:00
var time = time_out - lunch - time_in; // should be 07:00 or 7
最佳答案
我建议以稍微不同的方式来考虑这个问题...给定您的三次,将所有时间转换为纯小时数,然后像计算小时数一样进行计算。如果需要,您可以将小数小时变回分钟。
只需将分钟数除以 60,然后将结果添加到小时部分,即可将任何时间转换为小时。然后你的数学变得非常简单,除了你不必做基于时间的数学之外,它与你的表达式相同。
如果您得到“hh:mm”形式的输入,其中 hh 和 mm 是整数,那么您可以使用以下表达式计算纯小时:
var mytime = "hh:mm";
var temp = mytime.split(":");
var hours = temp[0] + (temp[1]/60);
编辑: 其他人指出,如果您处理夜类,就会出现问题。一个简单的解决方案(不需要创建 Date 对象)是在结束时间小于开始时间时将 24 小时添加到开始时间(当然可以在“纯小时”域中完成)。
关于javascript - 用三个时间值计算时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2031871/