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

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


当前回答

在我的例子中,我想要实现格式 “HH: MM: SS.fff”。 我是这样解决的:

timestamp = 28.97000002861023
str(datetime.fromtimestamp(timestamp)+timedelta(hours=-1)).split(' ')[1][:12]
'00:00:28.970'

其他回答

我很难说出一个简单的方法(至少我不记得语法),但可以使用时间。Strftime,它对格式有更多的控制:

from time import strftime
from time import gmtime

strftime("%H:%M:%S", gmtime(666))
'00:11:06'

strftime("%H:%M:%S", gmtime(60*60*24))
'00:00:00'

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

注意:在23:59:59之后截断

如果您希望将日期上的“从午夜开始的秒数”的单个值转换为datetime对象或具有HH:MM:SS的字符串,那么上面的解决方案将起作用,但我选择这个页面是因为我想在pandas的整个dataframe列上执行此操作。如果有人想知道如何在同一时间为多个值做到这一点,最后为我工作的是:

 mydate='2015-03-01'
 df['datetime'] = datetime.datetime(mydate) + \ 
                  pandas.to_timedelta(df['seconds_since_midnight'], 's')

你可以用秒除以60得到分钟

import time
seconds = time.time()
minutes = seconds / 60
print(minutes)

再除以60,就得到小时数

你可以使用datetime。timedelta功能:

>>> import datetime
>>> str(datetime.timedelta(seconds=666))
'0:11:06'

如果你需要约会时间。时间值,你可以用这个技巧:

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

您不能将timedelta添加到time,但可以将它添加到datetime。

UPD:这是同一技巧的另一种变体:

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

你可以用任何大于0的数字来代替1。这里我们使用的事实是datetime.fromordinal将总是返回时间分量为零的datetime对象。