一千萬個為什麽

搜索

如何計算兩個時間字符串之間的時間間隔

我有兩次,一個開始和一個停止時間,格式為10:33:26(HH:MM:SS)。我需要兩次之間的區別。我一直在瀏覽Python的文檔和在線搜索,我想它會與日期時間和/或時間模塊有關。我無法讓它正常工作,並且在涉及日期時只能查找如何執行此操作。

最終,我需要計算多個持續時間的平均值。我得到了時間差異,我將它們存儲在一個列表中。我現在需要計算平均值。我正在使用正則表達式解析原始時間然後做差異。

對於平均,我應該轉換為秒然後平均嗎?

最佳答案

是的,絕對 datetime 就是您所需要的。具體來說, strptime 函數,它將字符串解析為時間對象。

from datetime import datetime
s1 = '10:33:26'
s2 = '11:15:49' # for example
FMT = '%H:%M:%s'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)

這會得到一個 timedelta 對象,它包含兩次之間的差異。你可以做任何你想做的事,例如將其轉換為秒或將其添加到另一個 datetime

如果結束時間早於開始時間,則返回否定結果,例如 s1 = 12:00:00s2 = 05:00:00 。如果您希望代碼假設在這種情況下間隔跨越午夜(即它應該假設結束時間從不早於開始時間),則可以將以下行添加到上面的代碼中:

if tdelta.days < 0:
    tdelta = timedelta(days=0,
                seconds=tdelta.seconds, microseconds=tdelta.microseconds)

(當然你需要在某處包含 import timedelta )。感謝J.F. Sebastian指出這個用例。

轉載註明原文: 如何計算兩個時間字符串之間的時間間隔