Python从时间间隔获得小时,分钟和秒

时间:2014-07-03 02:22:01

标签: python

我有按给定间隔计算的时间戳。例如:时间戳为193894,时间间隔为20000。通过193894/20000 = 9.6947计算时间。 9.6947 9 minutes0.6947分钟(0.6947 * 60) = 42 s (rounded up),因此人类可读的时间戳为9 min 42 sec

是否存在Pythonic(假设有一些库)这样做的方式而不是为每个时间戳做这样的愚蠢的数学计算?

原因是因为如果时间戳是13923381 hour 9 min 37 sec)在小时范围内产生的东西,我希望能够保持动态。

我只是想知道是否有比数学计算方法更好的方法。

1 个答案:

答案 0 :(得分:2)

链接的问题可以帮助您实际格式化timedelta对象,但是您需要进行一些调整才能获得所需的确切行为

from __future__ import division

from datetime import timedelta
from math import ceil

def get_interval(timestamp, interval):
    # Create our timedelta object
    td = timedelta(minutes=timestamp/interval)
    s = td.total_seconds()
    # This point forward is based on http://stackoverflow.com/a/539360/2073595
    hours, remainder = divmod(s, 3600)
    minutes = remainder // 60
    # Use round instead of divmod so that we'll round up when appropriate.
    # To always round up, use math.ceil instead of round.
    seconds = round(remainder - (minutes * 60))
    return "%d hours %d min %d sec" % (hours, minutes, seconds)

if __name__ == "__main__:
    print print_interval(1392338, 20000)
    print get_interval(193894, 20000)

输出:

1 hours 9 min 37 sec
0 hours 9 min 42 sec