正确计算 24 小时格式持续时间差异

Correctly calculate 24 hr format duration difference

我正在尝试计算 24 小时开始时间和结束时间的总小时数:

var a = 10 - 01;
var b = 8 - 23;
var c = 17 - 08;
var result_a = a + " Hours";
var result_b = b + " Hours";
var result_c = c + " Hours";
console.log(result_a); 
console.log(result_b); 
console.log(result_c);

所以计算是在 var a 结束时间 (10:00) - 开始时间 (01:00) 我得到 9 小时。这与 var c

相同

我的问题是,如果我将开始时间设置为 23:00,将结束时间设置为 08:00(晚上 11:00 - 8:00am),我会得到 -15,因为它将是8 - 23.

var b 也应该是“9 小时”。正确的公式应该是什么?

您需要验证开始是否大于结束,因为两种可能性都有意义但需要不同的计算:

08:00 to 23:00 -> 15h (end - start)
23:00 to 08:00 ->  9h (end - start + 24)

值得注意的是,这不会考虑夏令时。为此,您需要特定的日期。如果你有这样的信息,你可以简单地求助于本机日期计算,即 DateTime::diff().