javascript - 用三个时间值计算时间差

标签 javascript jquery time

我在计算以 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/

相关文章:

javascript - 如果选择了特定的 <option> 值,则导航到 URL

javascript - Node.js 应用程序中的 JSON 正文始终为空

javascript - 如何在 XHR 调用中使用响应 PHP 变量?

javascript - 使用YQL进行跨域AJAX请求时什么也没得到

javascript - 将 'Grooveshark' 条目添加到 Google 的黑色导航栏

java - 如何在Java中返回LocalTime的总和

java - 花哨的时间格式化程序显示 "5 min ago", "yesterday"等

javascript - 如何使用 JavaScript 获取图像的宽度和高度?

c++ - 获取当前日期/时间在 C++20 中是线程安全的吗?

javascript - 弹出关闭不起作用有太多递归 jquery 错误