我有一个以秒为单位返回信息的函数,但我需要以小时:分钟:秒为单位存储该信息。
在Python中是否有一种简单的方法将秒转换为这种格式?
我有一个以秒为单位返回信息的函数,但我需要以小时:分钟:秒为单位存储该信息。
在Python中是否有一种简单的方法将秒转换为这种格式?
当前回答
在我的例子中,我想要实现格式 “HH: MM: SS.fff”。 我是这样解决的:
timestamp = 28.97000002861023
str(datetime.fromtimestamp(timestamp)+timedelta(hours=-1)).split(' ')[1][:12]
'00:00:28.970'
其他回答
通过使用divmod()函数,它只做一个除法就能得到商和余数,你只需要两个数学运算就能很快得到结果:
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
然后使用字符串格式将结果转换为您想要的输出:
print('{:d}:{:02d}:{:02d}'.format(h, m, s)) # Python 3
print(f'{h:d}:{m:02d}:{s:02d}') # Python 3.6+
这是我的小把戏:
from humanfriendly import format_timespan
secondsPassed = 1302
format_timespan(secondsPassed)
# '21 minutes and 42 seconds'
欲了解更多信息,请访问: https://humanfriendly.readthedocs.io/en/latest/api.html#humanfriendly.format_timespan
我看了这里的每一个答案,仍然尝试自己的答案
def a(t):
print(f"{int(t/3600)}H {int((t/60)%60) if t/3600>0 else int(t/60)}M {int(t%60)}S")
结果:
>>> a(7500)
2H 5M 0S
>>> a(3666)
1H 1M 6S
Python: 3.8.8
以下是我经常使用的一种方法:(不管它有多低效)
seconds = 19346
def zeroes (num):
if num < 10: num = "0" + num
return num
def return_hms(second, apply_zeroes):
sec = second % 60
min_ = second // 60 % 60
hrs = second // 3600
if apply_zeroes > 0:
sec = zeroes(sec)
min_ = zeroes(min_)
if apply_zeroes > 1:
hrs = zeroes(hrs)
return "{}:{}:{}".format(hrs, min_, sec)
print(return_hms(seconds, 1))
结果: 5:22:26
return_hms()函数的语法
return_hms()函数的用法如下:
第一个变量(秒)是你想转换成h:m:s的秒数。
第二个变量(apply_0s)是格式化:
0或更少:不应用任何零
1:当分钟和秒低于10时,将0应用于分钟和秒。
2或更多:当值小于10时,对任何值(包括小时)应用0。
你可以使用datetime。timedelta功能:
>>> import datetime
>>> str(datetime.timedelta(seconds=666))
'0:11:06'