我有2次以H:M
的形式存储在单独的字符串中,我需要了解这两者之间的差异,并能够分辨出这等于多少分钟。我曾经尝试过datetime
和timedelta
,但我只是一个初学者,我并不十分了解它的工作原理。我每次都遇到属性错误。
所以我有a和b次,而且我必须在几分钟之内得到它们的差值。
E 。 if a = 14:08 and b= 14:50
的差异应为42
如何在python中以最简单的方式做到这一点?另外,每个步骤我需要使用哪种格式?
答案 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
答案 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.timedelta
和a
创建的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