【发布时间】:2012-11-05 18:12:29
【问题描述】:
我需要一种方法来找出一个 datetime.time 在另一个 datetime.time 之后有多长时间 很简单,但是...问题是我的时间值是 24 小时制的,所以它不像否定一个值那么简单从另一个。相反,如果我要及时计数并且在午夜时间循环,我需要计算 time_b 在 time_a 之后多长时间,即
time_a = 09:00
time_b = 04:00
这里的 time_b 是 time_a 之后的 19 小时
def time_after_time(time_a, time_b):
a_hour = time_a.hour
a_minute = time_a.minute
b_hour = time_b.hour
b_minute = time_b.minute
out_hour = b_hour - a_hour
out_minute = b_minute - a_minute
if out_hour < 0:
out_hour += 24
if out_minute < 0:
out_hour -= 1
out_minute += 60
return datetime.time(out_hour, out_minute)
这是我的第一次尝试,但它给出了错误的结果。
谁能想到一个更清洁/正确的方法来做到这一点?
【问题讨论】:
-
为什么不使用
datetime.timedelta?time_b - time_a将产生一个timedelta。 -
这适用于 datetime.datetime 对象,但不适用于 datetime.time 对象
-
@MartijnPieters 看起来假设是同一日期的时间......所以,不太确定预期的答案......
-
是 09:00 - 10:00 = 1 小时还是 25 小时?那么最长是 24 小时吗?
-
所以如果
a= 09:00 和b= 10:00 那么b在a之后1 小时,但a在b之后23 小时,如果那样的话有道理