如何获得两个字符串之间的时间间隔?

时间:2019-01-25 20:31:02

标签: python datetime timedelta

我有2次以H:M的形式存储在单独的字符串中,我需要了解这两者之间的差异,并能够分辨出这等于多少分钟。我曾经尝试过datetimetimedelta,但我只是一个初学者,我并不十分了解它的工作原理。我每次都遇到属性错误。

所以我有a和b次,而且我必须在几分钟之内得到它们的差值。

E 。 if a = 14:08 and b= 14:50的差异应为42

如何在python中以最简单的方式做到这一点?另外,每个步骤我需要使用哪种格式?

3 个答案:

答案 0 :(得分:2)

我认为差异是42,而不是4(因为14:08和14:50之间有42分钟)。

如果时间总是包含5个字符长的字符串,那么这很容易。

time1 = '14:08'
time2 = '15:03'
hours = int(time2[:2]) - int(time1[:2])
mins  = int(time2[3:]) - int(time1[3:])
print(hours)
print(mins)
print(hours * 60 + mins)

打印:

1
-5
55
  • hours将是第二次和第一次的左两位数字[:1]减去的整数值
  • 分钟将是第二次和第一次的右边两位数字的整数值[3:]减去
  • 这将打印55 ...以您的值打印出42(上面的示例显示它在整整一个小时内也可以工作。

答案 1 :(得分:2)

您可以使用datetime.strptime

也就是42而不是4 50-8==42我认为那是一个错字

from datetime import datetime

a,b = "14:08", "14:50"

#convert to datetime
time_a = datetime.strptime(a, "%H:%M")
time_b = datetime.strptime(b, "%H:%M")

#get timedelta from the difference of the two datetimes
delta = time_b - time_a

#get the minutes elapsed
minutes = (delta.seconds//60)%60

print(minutes)
#42

答案 2 :(得分:1)

通过从给定的时间字符串datetime.timedeltaa创建的b对象中减去前者,可以得到它们之间的差,并使用total_seconds方法获取以秒为单位的时间间隔,您可以将其除以60转换为分钟:

from datetime import timedelta
from operator import sub
sub(*(timedelta(**dict(zip(('hours', 'minutes'), map(int, t.split(':'))))) for t in (b, a))).total_seconds() // 60

因此,给定a = '29:50'b = '30:08',将返回:

18.0