将秒转换为可读格式时间

use*_*149 4 python time

我有变量有秒,我想转换为详细的时间格式.我此刻喜欢这个.

runTime = '%s Hours:Minutes:Seconds' % time.strftime("%H:%M:%S", time.gmtime(runTime))
Run Code Online (Sandbox Code Playgroud)

输出:

17:25:46 Hours:Minutes:Seconds 
Run Code Online (Sandbox Code Playgroud)

我希望将其格式化为:

 17 Hours 25 Minutes 46 Seconds
Run Code Online (Sandbox Code Playgroud)

最终,我希望能够缩短较小的值:

因此,如果值是分钟和秒,它会是这样的

15 Minutes 5 Seconds
Run Code Online (Sandbox Code Playgroud)

如果有超过24小时,那么几天

  1 Days 15 Hours 5 Minutes 1 Seconds
Run Code Online (Sandbox Code Playgroud)

Bur*_*lid 9

您应该使用优秀的dateutil包,然后您的任务变得微不足道:

>>> from dateutil.relativedelta import relativedelta as rd
>>> fmt = '{0.days} days {0.hours} hours {0.minutes} minutes {0.seconds} seconds'
>>> print(fmt.format(rd(seconds=62745)))
0 days 17 hours 25 minutes 45 seconds
Run Code Online (Sandbox Code Playgroud)

一些高级示例,仅显示非零的字段的值:

>>> intervals = ['days','hours','minutes','seconds']
>>> x = rd(seconds=12345)
>>> print(' '.join('{} {}'.format(getattr(x,k),k) for k in intervals if getattr(x,k)))
3 hours 25 minutes 45 seconds
>>> x = rd(seconds=1234432)
>>> print(' '.join('{} {}'.format(getattr(x,k),k) for k in intervals if getattr(x,k)))
14 days 6 hours 53 minutes 52 seconds
Run Code Online (Sandbox Code Playgroud)