正确计算 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()
.
我正在尝试计算 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()
.