【问题标题】:Express time elapsed between element of an array of date in hour min second using python使用python以小时分钟秒表示日期数组元素之间经过的时间
【发布时间】:2016-12-30 14:47:31
【问题描述】:

我有一个使用 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',...])

但我还没有设法找到如何做到这一点。天真地考虑 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'

关于如何做到这一点的任何想法或链接?

谢谢, 格雷戈里

【问题讨论】:

    标签: python datetime time difference


    【解决方案1】:

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

    首先,您应该将时间戳转换为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']
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多