Python 3 - 计算两个时间值之间的差异

4

我有两个值。一个是我认为某个操作需要花费的预期时间,另一个是实际完成该任务所需的时间。在寻找解决方案时,我发现了这段代码,它可以正常工作,但只适用于任务完成所需时间不超过预期时间的情况。

Expected = '00:00:20'
Actual = '00:00:25'

FMT = '%H:%M:%S'

Difference = datetime.strptime(Expected, FMT) - datetime.strptime(Actual, FMT)

print(Difference)

这个代码块可以输出内容。
-1 day, 23:59:55

所以我在想如何让结果显示为-00:00:05呢?

一个解决方法是计算绝对值并检查符号。 - Willem Van Onsem
你有没有意识到你正在做期望值减去实际值?这可能是问题所在。 - benjaminudoh10
理论上,您可以将所有内容转换为秒,并手动进行计算。不过,可能有一种无需这样做的方法。 - Austin A
差异 = datetime.strptime(Actual, FMT) - datetime.strptime(Expected, FMT) 然后改变符号? - Chengzhi
1个回答

6

只需要三个步骤:

  1. 步骤一:比较两个时间值
  2. 步骤二:用较小的时间值减去较大的时间值
  3. 步骤三:如果你需要颠倒第二步中的数字顺序,则得到的差值为负数,否则差值为正数。

编辑: 整段代码如下:

from datetime import datetime
Expected = '00:00:20'
Actual = '00:00:25'

FMT = '%H:%M:%S'

time1=datetime.strptime(Expected, FMT)
time2=datetime.strptime(Actual, FMT)
rev=time1<time2
Difference =  time2 - time1 if rev else time1-time2
print("-" if rev else "",Difference,sep="")

你自己试过这些步骤了吗? - roganjosh
你在开玩笑吗,只需将代码复制粘贴到此处:https://repl.it/languages/python3 你会看到它完美地运行,我不明白为什么会有人对我的答案投反对票。 - gyurix
现在我已经将代码添加到我的答案中,请取消踩。它适用于Python 3,在Python 2中,您应该稍微改变一下print这一行的写法。 - gyurix
谢谢 :) 你可以使用我发送给你的网站来测试我的代码,它是一个基于Web的Python 3解释器 ;) - gyurix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接