计算时差并将datetime元素拆分为变量

问题描述

我想计算两个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,但是我不知道如何将65213分成三个不同的变量。

解决方法

您可能想直接从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)