2017-10-18 183 views
4

我有两个值。我认为要采取行动的预计时间量,以及实际完成该任务需要多长时间的价值。当搜索解决方案时,我发现此代码可以正常工作,直到完成任务花费的时间超过预期的时间。Python 3 - 计算两个时间值之间的差异

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,而不是?

+0

一种解决方法可能是计算绝对值,并检查正负号。 –

+0

你是否意识到自己在做预期 - 实际?这可能是问题所在。 – user452570

+0

理论上,您可以将所有内容都转换为秒,然后手动进行计算。尽管如此,还是有办法做到这一点。 –

回答

6

只要做到这3个步骤:

  1. 步:比较2时间值
  2. 步:从更大的一个
  3. 步减去较小的一个:如果你需要扭转的顺序2.步骤中的数字,那么你有一个负数的时间,否则差异是积极的。

编辑: 整个代码如下所示:

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="") 
+0

你是否尝试过自己的步骤? – roganjosh

+0

是的,我做了,让我把代码附加到这... – gyurix

+0

你在开玩笑,只是复制粘贴代码在这里:https://repl.it/languages/python3你会看到它的作品完美,我没有看到降低我的答案的原因。 – gyurix

相关问题