我试图将我的时间转换为使用AM / PM的12小时,但我一直收到错误并且不知道为什么。上下文是花费最后几分钟并确定最终结束的时间。这是我的代码,如果有人可以提供帮助。会很棒
import numpy as np
import datetime
import time
cummulative_myList=np.cumsum(myList)
time_in_minutes=cummulative_myList[-1]
time_in_seconds=time_in_minutes*60
print(time_in_seconds)
time=datetime.timedelta(0,time_in_seconds)
print(time)
last_bus_time= time.strptime(time, "%H:%M")
last_bus_time.strftime("%I:%M %p")
答案 0 :(得分:2)
datetime.timedelta
表示持续时间,而不是一天中的某个时间。如果要将持续时间视为一天中的某个时间,则需要将其添加到包含一天开头的datetime
对象。所以你可以这样做:
time = datetime.datetime(2000, 1, 1) + datetime.timedelta(seconds = time_in_seconds)
print(time.strftime("%I:%M %p"))
2000-01-01的日期是任意的,因为我们不关心日期是什么,我们只需要一个人从中获取时间。
参见相关内容:What is the standard way to add N seconds to datetime.time in Python?
答案 1 :(得分:0)
strptime 不是类 datetime.timedelta 的方法。
中的可用方法您也可以从repl验证这一点:
>>> import datetime
>>> dt = datetime.datetime.now()
>>> type(dt)
<class 'datetime.datetime'>
>>> time = datetime.timedelta(0, 100)
>>> type(time)
<class 'datetime.timedelta'>
如果您的时间以秒为单位,那么您只需构建一个日期时间对象并添加时间:
>>> import datetime
>>> dt = datetime.datetime.now()
>>> dt = dt.replace(hour=0, minute=0, second=0, microsecond=0)
>>> time = datetime.timedelta(0,time_in_seconds)
>>> last_bus_time = dt + time
>>> last_bus_time.strftime("%I:%M%p")