Problem polega na tym, że chcę, aby ignorował datę i tylko czynnik w czasie. Oto co mam:Wyodrębnij czas z datetime i sprawdź, czy czas (nie data) mieści się w zakresie?
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
jak jest, otrzymuję ten błąd:
TypeError: argument must be 9-item sequence, not datetime.datetime
Kiedy zmienić odpowiednią linię do:
str_time = time.strptime(Datetime, "%m/%j/%y %H:%M")
otrzymuję ten błąd:
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
Wiem, że pracuję z dwoma różnicami erent biblioteki lub co tam, ale nie jestem pewien, jak przekonwertować między nimi lub osiągnąć to, co chcę zrobić tylko przy użyciu jednego. Chcę tylko, aby ignorował datę i sprawdzał tylko, czy czas mieści się w podanych zakresach. Python 2.6 jest MUSI z powodu biblioteki, której używam w innym miejscu kodu.
Dzięki! Doceniam to! – Dan