Le problème est que je veux qu'il ignore la date et ne prenne en compte que l'heure. Voici ce que j'ai:
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
En l'état, j'obtiens cette erreur:
TypeError: argument must be 9-item sequence, not datetime.datetime
Lorsque je change la ligne pertinente en:
str_time = time.strptime(Datetime, "%m/%j/%y %H:%M")
Je reçois cette erreur:
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
Je sais que je travaille avec deux bibliothèques différentes ou autre, mais je ne sais pas comment convertir entre elles ou accomplir ce que je veux faire en utilisant une seule. Je veux juste qu'il ignore la date et ne vérifie que si l'heure est dans les plages spécifiées. Python 2.6 est un MUST en raison d'une bibliothèque que j'utilise ailleurs dans le code.
Cette ligne:
str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M")
renvoie un objet datetime
selon la documentation .
Vous pouvez le tester vous-même en exécutant la commande suivante de manière interactive dans l'interpréteur:
>>> import datetime
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M")
datetime.datetime(2013, 1, 31, 0, 12)
>>>
La partie temporelle du datetime retourné est ensuite accessible à l'aide de la méthode .time()
.
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M").time()
datetime.time(0, 12)
>>>
Le résultat datetime.time()
peut ensuite être utilisé dans vos comparaisons de temps.