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

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

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


当前回答

我喜欢这家伙的做法——https://amalgjose.com/2015/02/19/python-code-for-calculating-the-difference-between-two-time-stamps。 不确定它是否有缺点。

但对我来说看起来很整洁:)

from datetime import datetime
from dateutil.relativedelta import relativedelta

t_a = datetime.now()
t_b = datetime.now()

def diff(t_a, t_b):
    t_diff = relativedelta(t_b, t_a)  # later/end time comes first!
    return '{h}h {m}m {s}s'.format(h=t_diff.hours, m=t_diff.minutes, s=t_diff.seconds)

关于这个问题,您仍然需要使用datetime.strptime(),就像其他人前面说的那样。

其他回答

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

import time
start = time.time()

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

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

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

这个网站建议你试试:

import datetime as dt
start="09:35:23"
end="10:23:00"
start_dt = dt.datetime.strptime(start, '%H:%M:%S')
end_dt = dt.datetime.strptime(end, '%H:%M:%S')
diff = (end_dt - start_dt) 
diff.seconds/60 

这个论坛使用time.mktime()

    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))

通常,您需要处理多个case,并且可能使用pd.DataFrame(data)格式。然后:

import pandas as pd

df['duration'] = pd.to_datetime(df['stop time']) - pd.to_datetime(df['start time'])

不需要任何手动转换就可以得到时差。

取自将DataFrame列类型从字符串转换为日期时间。

如果你很懒,不介意熊猫的开销,那么你可以这样做,即使只是一个条目。

你可以用摆锤:

import pendulum

t1 = pendulum.parse("10:33:26")
t2 = pendulum.parse("10:43:36")

period = t2 - t1

print(period.seconds)

将输出:

610