用三个时间值计算时间差

th3*_*ler 1 javascript time jquery

我在计算以HH:mm字符串表示的三个时间值之间的时间(小时:分钟)差异时遇到问题.

我正在计算一天中的工作时间,午餐时间和时间.

例如var time_worked = time_out - lunch - 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  
Run Code Online (Sandbox Code Playgroud)

Mar*_*iot 5

我建议稍微改变一下......考虑到你的三次,将所有时间转换为纯时间,然后像几小时那样进行数学计算.如果需要,您可以将小时数转换回分钟.

只需将分钟数除以60并将结果添加到小时部分,任何时间都可以变成几小时.然后你的数学变得非常容易,除了你不必做基于时间的数学运算之外,你的表达式也是如此.

如果您输入的形式为"hh:mm",其中hh和mm是整数,那么您可以使用以下表达式计算纯小时数:

var mytime = "hh:mm";
var temp = mytime.split(":");
var hours = temp[0] + (temp[1]/60);
Run Code Online (Sandbox Code Playgroud)

编辑:其他人已经注意到如果你处理夜班问题就会出现问题.一个简单的解决方案(不需要创建Date对象)是在结束时间小于开始时间时将24小时添加到开始时间(当然可以在"纯小时"域中完成).