我有两个时间,开始时间和停止时间,格式为10:33:26 (HH:MM:SS)。我需要知道两次的差值。我一直在查阅Python文档并在网上搜索,我可以想象它与datetime和/或time模块有关。我不能让它正常工作,一直在寻找如何在约会时做到这一点。

最后,我需要计算多个时间持续时间的平均值。我得到了时差,我把它们存储在一个列表中。现在我需要计算平均值。我用正则表达式来解析出原始时间,然后求出差异。

对于平均,我应该转换成秒然后平均吗?


当前回答

time和datetime都有一个日期组件。

通常情况下,如果你只是处理时间部分,你会提供一个默认日期。如果您只是对差异感兴趣,并且知道两个时间都在同一天,那么为每个时间构造一个datetime,将日期设置为今天,并从停止时间减去开始时间以获得间隔(timedelta)。

其他回答

    import datetime
    
    day = int(input("day[1,2,3,..31]: "))
    month = int(input("Month[1,2,3,...12]: "))
    year = int(input("year[0~2020]: "))
    start_date = datetime.date(year, month, day)
    
    day = int(input("day[1,2,3,..31]: "))
    month = int(input("Month[1,2,3,...12]: "))
    year = int(input("year[0~2020]: "))
    end_date = datetime.date(year, month, day)
    
    time_difference = end_date - start_date
    age = time_difference.days
    print("Total days: " + str(age))

time和datetime都有一个日期组件。

通常情况下,如果你只是处理时间部分,你会提供一个默认日期。如果您只是对差异感兴趣,并且知道两个时间都在同一天,那么为每个时间构造一个datetime,将日期设置为今天,并从停止时间减去开始时间以获得间隔(timedelta)。

试试这个方法吧——它对安排短期事件很有效。如果某些内容花费了一个多小时,那么最终的显示可能需要一些友好的格式。

import time
start = time.time()

time.sleep(10)  # or do something more productive

done = time.time()
elapsed = done - start
print(elapsed)

时间差以经过的秒数返回。

看一下datetime模块和timedelta对象。您最终应该为开始和停止时间构造一个datetime对象,当您减去它们时,您将得到一个timedelta。

下面是如果字符串也包含天数的代码[-1 day 32:43:02]:

print(
    (int(time.replace('-', '').split(' ')[0]) * 24) * 60 
    + (int(time.split(' ')[-1].split(':')[0]) * 60)
    + int(time.split(' ')[-1].split(':')[1])
)