¿Extrae el tiempo de datetime y determina si el tiempo (no la fecha) está dentro del rango?

El problema es que quiero que ignore la fecha y solo tenga en cuenta el tiempo. Esto es lo que tengo:

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 

Como es, me sale este error:

 TypeError: argument must be 9-item sequence, not datetime.datetime 

Cuando cambio la línea correspondiente a:

 str_time = time.strptime(Datetime, "%m/%j/%y %H:%M") 

Me sale este error:

 TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int' 

Sé que estoy trabajando con dos bibliotecas diferentes o lo que sea, pero no estoy seguro de cómo convertir entre ellas o de lograr lo que quiero hacer solo con una. Solo quiero que ignore la fecha y solo compruebe si la hora está dentro de los rangos especificados. Python 2.6 es DEBIDO a una biblioteca que estoy usando en otra parte del código.

Esta línea:

 str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M") 

devuelve un objeto de datetime y datetime según los documentos .

Puede probarlo usted mismo ejecutando el siguiente comando de forma interactiva en el intérprete:

 >>> import datetime >>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M") datetime.datetime(2013, 1, 31, 0, 12) >>> 

Se puede acceder a la parte de tiempo del datetime devuelto usando el método .time() .

 >>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M").time() datetime.time(0, 12) >>> 

El resultado de datetime.time() se puede usar en tus comparaciones de tiempo.