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



我有一个使用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'

我想做的是创建另一个表,其中包含自第一个元素以来经过的时间,但以hour:min:sec表示,这样它看起来像:

array(['00:00:00','00:16:36',...])

但我还没有设法找到如何做到这一点。天真地将time_creation_sorted元素之间的差异转换为hour:min:sec并不能给出合乎逻辑的结果:

datetime.fromtimestamp(time_creation_sorted[1]-time_creation_sorted[0]).strftime('%H:%M:%S')
Out[67]: '01:17:02'

有任何想法或链接如何做到这一点吗?

谢谢,格里高利

为了得到想要的输出,您需要重新安排代码的某些部分。

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

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']

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

https://docs.python.org/2/library/datetime.html timedelta-objects

相关内容

  • 没有找到相关文章

最新更新