python秒转化为分钟-python - 如何将秒转换为小时,分钟和秒?

python – 如何将秒转换为小时,分钟和秒?

我有一个在几秒钟内返回信息的函数,但我需要以小时:分钟:秒存储该信息。

有没有一种简单的方法可以在Python中将秒转换为这种格式?

7个解决方案

553 votes

或者你可以这样做:

>>> import datetime

>>> str(datetime.timedelta(seconds=666))

‘0:11:06’

SilentGhost answered 2019-01-07T02:50:35Z

546 votes

通过使用divmod()函数,它只生成一个除法来产生商和余数,只需两个数学运算就可以非常快速地得到结果:

m, s = divmod(seconds, 60)

h, m = divmod(m, 60)

print “%d:%02d:%02d” % (h, m, s)

Brandon Rhodes answered 2019-01-07T02:50:57Z

55 votes

我很难说这是一个简单的方法(至少我不记得语法),但可以使用time.strftime,它可以更好地控制格式:

>>> import time

>>> time.strftime(“%H:%M:%S”, time.gmtime(666))

’00:11:06′

gmtime用于将秒转换为strftime()所需的特殊元组格式。

anatoly techtonik answered 2019-01-07T02:51:26Z

31 votes

>>> import datetime

>>> “{:0>8}”.format(datetime.timedelta(seconds=66))

>>> “{:0>8}”.format(str(datetime.timedelta(seconds=66))) # Python3

>>> ’00:01:06′ # good

和:

>>> “{:0>8}”.format(datetime.timedelta(seconds=666777))

>>> “{:0>8}”.format(str(datetime.timedelta(seconds=666777))) # Python3

>>> ‘7 days, 17:12:57’ # nice

没有’:0> 8’:

>>> “{}”.format(datetime.timedelta(seconds=66))

>>> ‘0:01:06’ # not HH:MM:SS

和:

>>> import time

>>> time.strftime(“%H:%M:%S”, time.gmtime(666777))

>>> ’17:12:57′ # wrong

但:

>>> “{:0>8}”.format(datetime.timedelta(seconds=620000))

>>> “{:0>8}”.format(str(datetime.timedelta(seconds=620000))) # Python3

>>> ‘7 days, 4:13:20’ # bummer

marcell answered 2019-01-07T02:51:53Z

12 votes

这是我的快速诀窍:

import humanfriendly

humanfriendly.format_timespan(secondsPassed)

访问:[https://humanfriendly.readthedocs.io/en/latest/#humanfriendly.format_timespan]了解更多信息。

doories answered 2019-01-07T02:52:23Z

8 votes

如果你需要获得1值,你可以使用这个技巧:

my_time = (datetime(1970,1,1) + timedelta(seconds=my_seconds)).time()

您不能将1添加到datetime.fromordinal,但可以添加到datetime。

UPD:同一技术的另一种变体:

my_time = (datetime.fromordinal(1) + timedelta(seconds=my_seconds)).time()

您可以使用任何大于0的数字代替1。这里我们使用的事实是datetime.fromordinal将始终返回datetime对象,其中time组件为零。

MarSoft answered 2019-01-07T02:53:05Z

2 votes

这就是我得到它的方式。

def sec2time(sec, n_msec=3):

”’ Convert seconds to ‘D days, HH:MM:SS.FFF’ ”’

if hasattr(sec,’__len__’):

return [sec2time(s) for s in sec]

m, s = divmod(sec, 60)

h, m = divmod(m, 60)

d, h = divmod(h, 24)

if n_msec > 0:

pattern = ‘%%02d:%%02d:%%0%d.%df’ % (n_msec+3, n_msec)

else:

pattern = r’%02d:%02d:%02d’

if d == 0:

return pattern % (h, m, s)

return (‘%d days, ‘ + pattern) % (d, h, m, s)

一些例子:

$ sec2time(10, 3)

Out: ’00:00:10.000′

$ sec2time(1234567.8910, 0)

Out: ’14 days, 06:56:07′

$ sec2time(1234567.8910, 4)

Out: ’14 days, 06:56:07.8910′

$ sec2time([12, 345678.9], 3)

Out: [’00:00:12.000′, ‘4 days, 00:01:18.900’]

Lee answered 2019-01-07T02:53:34Z

    原文作者:weixin_37988176
    原文地址: https://blog.csdn.net/weixin_37988176/article/details/109372055
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞