如何在Python中找到两次之间的区别?

时间:2018-06-03 15:18:46

标签: python python-3.x

我试图在Python中找到两次之间的区别。保证时间在同一天。

#For example
s1 = '13:00' 
s2 = '12:58'

这两次之间的差异应该是2分钟。输出应为:2

这是我的代码:

from datetime import datetime
s1 = '13:00'
s2 = '12:58'
FMT = '%H:%M'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
print(tdelta)

但它返回:

-1 day, 23:58:00

我如何解决这个问题并将时间作为:2

返回

3 个答案:

答案 0 :(得分:3)

您可以尝试使用abs作为结果,例如abs(datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT))

from datetime import datetime
s1 = '13:00'
s2 = '12:58'
FMT = '%H:%M'
tdelta = abs(datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT))
print(tdelta)

结果:

0:02:00

更新

正如下面评论中所建议的那样,如果您特别想要minutes中的差异,可以在.total_seconds()/60中使用tdelta

from datetime import datetime
s1 = '13:00'
s2 = '12:58'
FMT = '%H:%M'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
minutes_difference = abs(tdelta.total_seconds()/60)
print(minutes_difference)

结果:

2.0

答案 1 :(得分:2)

Here我喜欢这个人是怎么做的

还有一些代码段

来自datetime import datetime

from dateutil.relativedelta import relativedelta

    t_a = datetime.now()
    t_b = datetime.now()

    def diff(t_a, t_b):
        t_diff = relativedelta(t_b, t_a)  # later/end time comes first!
        return '{h}h {m}m {s}s'.format(h=t_diff.hours, m=t_diff.minutes, s=t_diff.seconds)

答案 2 :(得分:0)

您可以使用Python pandas库:

import pandas as pd

time_1 = pd.Timestamp('13:00')
time_2 = pd.Timestamp('12:58')
delta = time_1 - time_2
print(delta)

Timestamp()方法允许您创建一个简单的时间戳。这是你的输出:

0 days 00:02:00

除非您另行指定,否则时间戳在同一天。