使用python表示日期数组元素之间经过的时间,单位为小时分秒

使用python表示日期数组元素之间经过的时间,单位为小时分秒,python,datetime,time,difference,Python,Datetime,Time,Difference,我有一个使用os.path.getmtime创建文件的时间列表 time_creation_sorted Out[45]: array([ 1.47133334e+09, 1.47133437e+09, 1.47133494e+09, 1.47133520e+09, 1.47133577e+09, 1.47133615e+09, 1.47133617e+09, 1.47133625e+09, 1.47133647e+09]) 我知

我有一个使用os.path.getmtime创建文件的时间列表

time_creation_sorted
Out[45]: 
array([  1.47133334e+09,   1.47133437e+09,   1.47133494e+09,
         1.47133520e+09,   1.47133577e+09,   1.47133615e+09,
         1.47133617e+09,   1.47133625e+09,   1.47133647e+09])
我知道如何在小时分秒内转换这些元素

datetime.fromtimestamp(time_creation_sorted[1]).strftime('%H:%M:%S')
Out[62]: '09:59:26'
我想做的是创建另一个表,该表包含从第一个元素开始经过的时间,但以小时:分钟:秒表示,因此它看起来像:

array(['00:00:00','00:16:36',...])
但我还没有找到如何做到这一点。天真地考虑时间元素之间的差异,并尝试将其转换为小时:分钟:秒,这并不符合逻辑:

datetime.fromtimestamp(time_creation_sorted[1]-time_creation_sorted[0]).strftime('%H:%M:%S')
Out[67]: '01:17:02'
有没有关于如何做到这一点的想法或链接

谢谢,
Grégory

检查timedelta对象,它给出两个日期或时间之间的差异


您需要重新排列代码的某些部分,以获得所需的输出

首先,您应该将时间戳转换为
datetime
对象,这些差异会导致所谓的
timedelta
对象。那些
timedelta
对象的
\uu str\uu()
表示形式正是您想要的:

from datetime import datetime

tstamps = [1.47133334e+09, 1.47133437e+09, 1.47133494e+09, 1.47133520e+09, 1.47133577e+09, 1.47133615e+09, 1.47133617e+09, 1.47133625e+09, 1.47133647e+09]
tstamps = [datetime.fromtimestamp(stamp) for stamp in tstamps]

tstamps_relative = [(t - tstamps[0]).__str__() for t in tstamps]
print(tstamps_relative)
给予:

['0:00:00', '0:17:10', '0:26:40', '0:31:00', '0:40:30', '0:46:50', '0:47:10', '0:48:30', '0:52:10']