问题描述
我想计算两个24小时制的时间值之间的时差,其中仅包含小时,分钟和秒值。然后,我想将时差分为小时,分钟和秒值,并将它们输出为三个不同的变量。
例如,我想要的输出将是:
time1 = '10:33:26'
time2 = '17:25:39'
Hours: 6
Minutes: 52
Seconds: 13
因为17:25:39是10:33:26之后的6小时52分13秒。
我尝试了以下代码:
from datetime import datetime
s1 = '10:33:26'
s2 = '17:25:39'
FMT = '%H:%M:%s'
tdelta = datetime.strptime(s2,FMT) - datetime.strptime(s1,FMT)
print(tdelta)
它可以正确输出6:52:13
,但是我不知道如何将6
,52
和13
分成三个不同的变量。
解决方法
您可能想直接从total_seconds()
自己进行数值计算,而不是依赖于对字符串转换的结果进行反解析(旨在供人类阅读)。例如:
from datetime import datetime
s1 = '10:33:26'
s2 = '17:25:39'
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2,FMT) - datetime.strptime(s1,FMT)
ts = int(tdelta.total_seconds())
secs = ts % 60
mins = (ts // 60) % 60
hours = (ts // 3600)
print(hours,mins,secs)
,
您可以将输出转换为字符串,然后使用split()
方法。例如:
str(tdelta).split(':')
将输出:
['6','52','13']
然后,您可以简单地遍历输出列表。
,您可以使用timedelta进行数值计算。
time1 = datetime.timedelta(hours=10,minutes=33,seconds=26)
time2 = datetime.timedelta(hours=17,minutes=25,seconds=39)
time_diff = time2 - time1
hour,min,sec = str(time_diff ).split(':')
print(hour,sec)