Dan*_*Dan 20 python datetime python-2.6
问题是我希望它忽略日期,只考虑时间因素.这是我有的:
import time
from time import mktime
from datetime import datetime
def getTimeCat(Datetime):
# extract time categories
str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M")
ts = datetime.fromtimestamp(mktime(str_time))
# --> Morning = 0400-1000
mornStart = datetime.time(4, 0, 1)
mornEnd = datetime.time(10, 0, 0)
# --> Midday = 1000-1600
midStart = datetime.time(10, 0, 1)
midEnd = datetime.time(16, 0, 0)
# --> Evening = 1600-2200
eveStart = datetime.time(16, 0, 1)
eveEnd = datetime.time(22, 0, 0)
# --> Late Night = 2200-0400
lateStart = datetime.time(22, 0, 1)
lateEnd = datetime.time(4, 0, 0)
if time_in_range(mornStart, mornEnd, ts):
timecat = 0 #morning
elif time_in_range(midStart, midEnd, ts):
timecat = 1 #midday
elif time_in_range(eveStart, eveEnd, ts):
timecat = 2 #evening
elif time_in_range(lateStart, lateEnd, ts):
timecat = 3 #late night
return timecat
Run Code Online (Sandbox Code Playgroud)
就是这样,我收到这个错误:
TypeError: argument must be 9-item sequence, not datetime.datetime
Run Code Online (Sandbox Code Playgroud)
当我将相关行更改为:
str_time = time.strptime(Datetime, "%m/%j/%y %H:%M")
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
Run Code Online (Sandbox Code Playgroud)
我知道我正在使用两个不同的库或诸如此类的东西,但是我不确定如何在它们之间进行转换或者只使用一个来完成我想做的事情.我只是想让它忽略日期,只检查时间是否在指定的范围内.由于我在代码中的其他地方使用的库,Python 2.6是必须的.
Aus*_*ips 33
这一行:
str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M")
Run Code Online (Sandbox Code Playgroud)
根据文档返回一个datetime
对象.
您可以通过在解释器中以交互方式运行以下命令来自行测试:
>>> import datetime
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M")
datetime.datetime(2013, 1, 31, 0, 12)
>>>
Run Code Online (Sandbox Code Playgroud)
然后可以使用该.time()
方法访问返回的日期时间的时间部分.
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M").time()
datetime.time(0, 12)
>>>
Run Code Online (Sandbox Code Playgroud)
datetime.time()
然后可以将结果用于您的时间比较.
小智 8
使用它只会给你时间。
from datetime import datetime
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
print("Current Time =", current_time)
Run Code Online (Sandbox Code Playgroud)