计算
题目描述求时刻t1和t2之间的绝对时间差。t1和t2都是以hh:mm:ss或mm:ss格式的字符串,返回的时间差字符串也有相同的格式(如果hh部分等于零,则应省略hh部分)
输入
字符串t1,t2
输出
时间差
输入样例1
17:19:23, 13:11:7
输出样例1
04:08:16
以下是Python的实现代码:
from datetime import datetime, timedelta
def time_difference(t1: str, t2: str) -> str:
fmt = '%H:%M:%S' if ':' in t1 else '%M:%S'
dt1 = datetime.strptime(t1, fmt)
dt2 = datetime.strptime(t2, fmt)
diff = abs(dt1 - dt2)
total_seconds = diff.total_seconds()
hours, remainder = divmod(total_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
if fmt == '%M:%S':
return "{:02d}:{:02d}".format(int(minutes), int(seconds))
else:
return "{:02d}:{:02d}:{:02d}".format(int(hours), int(minutes), int(seconds))
t1, t2 = "17:19:23", "13:11:7"
print(time_difference(t1, t2)) # 04:08:16
解释如下:
首先,我们需要将输入的字符串t1和t2转换为datetime对象,以便进行时间计算。
其次,我们可以使用datetime.timedelta对象计算两个datetime对象之间的差异,并使用total_seconds()方法将秒数转换为总秒数。
然后,我们将总秒数转换为小时、分钟和秒钟,并格式化结果字符串。如果数据格式为mm:ss,则省略小时字段。
最后,我们将时间差作为一个字符串返回。
这样,我们就可以得到输出的时间差为"04:08:16" def time_difference(t1: str, t2: str) -> str:
t1_parts = list(map(int, t1.split(':')))
t2_parts = list(map(int, t2.split(':')))
if len(t1_parts) == 2:
t1_parts.insert(0, 0)
if len(t2_parts) == 2:
t2_parts.insert(0, 0)
t1_seconds = t1_parts * 3600 + t1_parts * 60 + t1_parts
t2_seconds = t2_parts * 3600 + t2_parts * 60 + t2_parts
diff = abs(t1_seconds - t2_seconds)
hh, remaining = divmod(diff, 3600)
mm, ss = divmod(remaining, 60)
if hh == 0:
return f"{mm:02d}:{ss:02d}"
else:
return f"{hh:02d}:{mm:02d}:{ss:02d}"
# Get input and call the function
t1, t2 = input().split(', ')
print(time_difference(t1, t2))
页:
[1]