使用python将时间转换为上午/下午

时间:2017-09-30 16:53:07

标签: python time

我试图将我的时间转换为使用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")

2 个答案:

答案 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的日期是任意的,因为我们不关心日期是什么,我们只需要一个人从中获取时间。

DEMO

参见相关内容:What is the standard way to add N seconds to datetime.time in Python?

答案 1 :(得分:0)

strptime 不是类 datetime.timedelta 的方法。

您可以查看python3 datetime docs

中的可用方法

您也可以从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")