找到两个选定时间之间的差异

find difference between two selected hours

我从 0-23 范围内选择了两个小时。如何以编程方式计算它们之间的差异?例如,22 和 4 之间的差异将是 6、22 和 24 - 2。

让我们假设 first_time 是第一个选定的小时,second_time 是第二个选定的小时。

伪代码:

if first_time > 12:
    first_time = 24 - first_time
if second_time < 12:
    second_time = -second_time
time_difference = abs(first_time - second_time)

如果您需要绝对差异,您可以使用 abs() 函数,否则您可以排除它。

这是模 24 算法的示例(有关 modular arithmetic 的更多信息)。

时间是全等模 24,关于 24 有全等(或等价)(例如,1 等价于(或等价)25)。你可以只计算差异的模数。

(second_time - first_time) modulo 24

在你的例子中,

(4 - 22) modulo 24 = -18 modulo 24 = 6
(24 - 22) modulo 24 = 2 modulo 24 = 2

编辑:

只是为了更详细一点。该答案仅考虑了您在问题中指定的详细信息,即从 0-23 开始的时间。如果您想实现更复杂的目标,则需要考虑很多极端情况和例外情况。

例如,使用我的方法,您无法区分 0:00 和 24:00,因为它们是等效时间,因此您需要一个特定的案例.无论如何,如果时间只是按照规定从 0 到 23,0:00 和 0:00 之间的差异将取决于它们是同一时间还是 24 小时后的周期,这将发生在任何两个相等的时间(6:00 到 6:00,是同一天还是 +N 天?)。所以你需要另外有一个日期来解决这个歧义。

如果您使用分钟,如果您考虑时区、闰秒等等,将会出现更多的复杂情况。

根据您使用的语言,您可能会对负数的模运算符感到复杂,因此您也应该考虑这一点(增加循环时间可以解决这个问题)。这样做:

(second_time - first_time + 24) modulo 24