如何在python 3.x中将秒转换为hh:mm:ss

Wil*_*ver -2 python-3.x

我只需要数学运算符就可以做到这一点,但是我总是在领域中得到高得离谱的数字。

def main():
seconds = int(input('Seconds to be converted? '))
days = seconds / 86400
seconds = seconds - (days * 86400)
hours = seconds / 3600
seconds = seconds - (hours * 3600)
minutes = seconds / 60
seconds = seconds - (minutes * 60)

print('-------------')
print('You entered: ', seconds)
print('')
print('The converted time is: ', format(days, '1.0f'), ':', format(hours, '1.0f'), ':', format(minutes, '1.0f'), ':', format(seconds, '1.0f'))
Run Code Online (Sandbox Code Playgroud)

JBe*_*rdo 7

>>> s = 12345  # seconds
>>> '{:02}:{:02}:{:02}'.format(s//3600, s%3600//60, s%60)
'03:25:45'
Run Code Online (Sandbox Code Playgroud)


小智 5

为了获得最大的可重用性,该datetime库将很方便:

例如,此代码:

import datetime
s=12345
x=datetime.timedelta(seconds=s)
print x
Run Code Online (Sandbox Code Playgroud)

输出:

3:25:45
Run Code Online (Sandbox Code Playgroud)

  • **多谢。我刚刚对此进行了基准测试,结果发现它是一个非常快的库,并且它包含在 Python 中!太棒了!** `python -m timeit -s "import datetime; start_time = time.time()" "now=time.time(); elapsed = int(now-start_time); foo=datetime.timedelta(seconds=elapsed) )"` 结果:`500000 次循环,最好的 5 次:每个循环 595 纳秒`(即每次调用的纳秒......只是为了好玩,此测试的所有 500,000 次运行,其中包括 `time.time()`和 `int()` 截断,总运行时间仅为 297.5 毫秒)。所以,不用担心性能!`datetime` 非常快。 (2认同)
  • **最终更新:** 该基准具有误导性。它创建 timedelta 对象的速度确实非常快。但如果用户想要字符串 (H:MM:SS),则必须调用字符串转换。一种方法是在日期时间对象上调用“str()”。这为我们提供了转换时间和生成字符串的真实时间: `python -m timeit -s "import datetime; start_time = time.time() - 100" "now=time.time(); elapsed = int( now-start_time); foo=str(datetime.timedelta(seconds=elapsed))"` 结果是 1360 纳秒。所以事实上它比你自己计算和格式化要慢 16%。 (2认同)
  • **最终更新 2**:我们还应该考虑一件事......事实上,大多数采用“手动算法”的人会将它们放在实用函数中。我也进行了基准测试: `python -m timeit -s "import datetime; start_time = time.time() -12345; convtime=lambda s: '{:01}:{:02}:{:02}'.format( s//3600, s%3600//60, s%60)" "now=time.time(); Seconds = int(now-start_time); res = convtime(Seconds)"` 结果是 1220 纳秒。老实说,它与 timedelta 库非常接近,所以我只使用“datetime.timedelta”来代替。谢谢你!我希望我的评论对未来的人类有所帮助! (2认同)