今天遇到了一个很简单的需求,计算一个模块的运行时间。

这个功能其实很简单,日志中有每个模块的开始运行时间和结束运行时间,用datetime模块一计算就可以了。

def compute_time(start, end):
start = datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")
end = datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")
print((end - start).seconds)


if __name__ == '__main__':
compute_time(start="2021-04-28 13:41:20", end="2021-04-28 14:10:07")
compute_time(start="2021-04-28 14:10:07", end="2021-04-28 14:19:21")
compute_time(start="2021-04-28 14:19:21", end="2021-04-28 14:37:51")
compute_time(start="2021-04-28 14:37:51", end="2021-04-28 15:25:39")
compute_time(start="2021-04-28 15:25:39", end="2021-04-28 17:46:55")
compute_time(start="2021-04-28 17:46:55", end="2021-04-28 18:05:51")

但是这计算出来的是多少秒,需要转换成 时分秒 的格式。

1分钟是60秒,所以用总秒数除以60得到总分钟数和秒数,同理用总分钟数除以60得到总小时数和分钟数。

m, s = divmod((end - start).seconds, 60)
h, m = divmod(m, 60)
print(f"{h}时{m}分{s}秒")