我有按给定间隔计算的时间戳。例如:时间戳为193894
,时间间隔为20000
。通过193894/20000 = 9.6947
计算时间。 9.6947
9 minutes
和0.6947
分钟(0.6947 * 60) = 42 s (rounded up)
,因此人类可读的时间戳为9 min 42 sec
。
是否存在Pythonic(假设有一些库)这样做的方式而不是为每个时间戳做这样的愚蠢的数学计算?
原因是因为如果时间戳是1392338
(1 hour 9 min 37 sec
)在小时范围内产生的东西,我希望能够保持动态。
我只是想知道是否有比数学计算方法更好的方法。
答案 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