我有一个以秒为单位返回信息的函数,但我需要以小时:分钟:秒为单位存储该信息。
在Python中是否有一种简单的方法将秒转换为这种格式?
我有一个以秒为单位返回信息的函数,但我需要以小时:分钟:秒为单位存储该信息。
在Python中是否有一种简单的方法将秒转换为这种格式?
当前回答
如果您希望将日期上的“从午夜开始的秒数”的单个值转换为datetime对象或具有HH:MM:SS的字符串,那么上面的解决方案将起作用,但我选择这个页面是因为我想在pandas的整个dataframe列上执行此操作。如果有人想知道如何在同一时间为多个值做到这一点,最后为我工作的是:
mydate='2015-03-01'
df['datetime'] = datetime.datetime(mydate) + \
pandas.to_timedelta(df['seconds_since_midnight'], 's')
其他回答
division = 3623 // 3600 #to hours
division2 = 600 // 60 #to minutes
print (division) #write hours
print (division2) #write minutes
PS:我的代码不专业
下面是一个简单的程序,它读取当前时间并将其转换为以小时、分钟和秒为单位的一天时间
import time as tm #import package time
timenow = tm.ctime() #fetch local time in string format
timeinhrs = timenow[11:19]
t=tm.time()#time.time() gives out time in seconds since epoch.
print("Time in HH:MM:SS format is: ",timeinhrs,"\nTime since epoch is : ",t/(3600*24),"days")
输出为
Time in HH:MM:SS format is: 13:32:45
Time since epoch is : 18793.335252338384 days
我看了这里的每一个答案,仍然尝试自己的答案
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
有点离题,但可能对某人有用
def time_format(seconds: int) -> str:
if seconds is not None:
seconds = int(seconds)
d = seconds // (3600 * 24)
h = seconds // 3600 % 24
m = seconds % 3600 // 60
s = seconds % 3600 % 60
if d > 0:
return '{:02d}D {:02d}H {:02d}m {:02d}s'.format(d, h, m, s)
elif h > 0:
return '{:02d}H {:02d}m {:02d}s'.format(h, m, s)
elif m > 0:
return '{:02d}m {:02d}s'.format(m, s)
elif s > 0:
return '{:02d}s'.format(s)
return '-'
结果:
print(time_format(25*60*60 + 125))
>>> 01D 01H 02m 05s
print(time_format(17*60*60 + 35))
>>> 17H 00m 35s
print(time_format(3500))
>>> 58m 20s
print(time_format(21))
>>> 21s
这是我的小把戏:
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