在Python中将秒转换为hh:mm:ss

109 投票
10 回答
215749 浏览
提问于 2025-04-15 14:06

我该怎么把一个整数(表示秒数)转换成分钟:秒或者小时:分钟:秒的格式呢?

我需要用Python代码来实现这个功能(如果可以的话,也希望在Django模板中做到)。

10 个回答

29

了解一下 datetime 模块。

SilentGhost 的回答包含了我回答中没有提到的细节,这里重新贴出来:

>>> a = datetime.timedelta(seconds=65)
datetime.timedelta(0, 65)
>>> str(a)
'0:01:05'
116

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用一个特定的功能时,发现它并没有按照预期工作。这时候,查看相关的讨论或者问答平台,比如StackOverflow,就能找到很多有用的信息和解决方案。

在这些讨论中,大家会分享自己的经验,提出问题,或者给出解决办法。通过阅读这些内容,我们可以更好地理解问题的根源,以及如何去解决它们。这就像是一个大家互相帮助的社区,大家都在努力让编程变得更简单。

所以,如果你在编程的过程中遇到困难,不妨去看看这些讨论,或许能找到你需要的答案。

>>> a = datetime.timedelta(seconds=65)
datetime.timedelta(0, 65)
>>> str(a)
'0:01:05'
226

我真不敢相信,很多回答都没有给出我认为的“显而易见的做法”(而且我还不是荷兰人呢...!)——就是处理不超过24小时的秒数(具体来说是86399秒):

>>> import time
>>> time.strftime('%H:%M:%S', time.gmtime(12345))
'03:25:45'

在Django模板中处理这个问题会比较麻烦,因为time过滤器支持一种奇怪的时间格式语法(我觉得是受PHP启发的),而且还需要datetime模块和像pytz这样的时区实现来准备数据。例如:

>>> from django import template as tt
>>> import pytz
>>> import datetime
>>> tt.Template('{{ x|time:"H:i:s" }}').render(
...     tt.Context({'x': datetime.datetime.fromtimestamp(12345, pytz.utc)}))
u'03:25:45'

根据你的具体需求,可能在你的应用中定义一个自定义过滤器来处理这种格式化会更方便。

撰写回答