tutorial lenguaje espaƱol descargar python

python - lenguaje - no se puede comparar datetime.datetime a datetime.date



python tutorial (7)

Este problema surge cuando intenta comparar un campo de fecha ( DateField ) y un campo de fecha y hora ( DateTimeField ).

La solución sería verificar dónde definió los campos en sus modelos y asegurarse de que los tipos sean uniformes.

Sugeriría que reemplaces todo DateField con DateTimeField .

Tengo el siguiente código y estoy obteniendo el error anterior. Como soy nuevo en Python, tengo problemas para entender la sintaxis aquí y cómo puedo solucionar el error:

if not start or date < start: start = date


Hay un método datetime.date() para convertir de una fecha a una fecha.

Para hacer la conversión opuesta, puede usar esta función datetime.datetime(d.year, d.month, d.day)


Puede convertir datetime.date a datetime.datetime construyendo este último utilizando los atributos de year , month y day del antiguo:

from datetime import datetime, day d = day(2000, 12, 31) dt = datetime(d.year, d.month, d.day)

Gracias a Steven por la solución.


Puede usar el método datetime.datetime.combine para comparar el objeto date con el objeto datetime, luego compare el objeto convertido con el otro objeto datetime.

import datetime dt1 = datetime.datetime(2011, 03, 03, 11, 12) day = datetime.date(2011, 03, 02) dt2 = datetime.datetime.combine(day, datetime.time(0, 0)) print dt1 > dt2


Recibí el error anterior al usar pandas , sin embargo, porque date_column era la cadena que perdí mucho tiempo sin darme cuenta de que estaba formateando lo incorrecto:

# didnt work df[(df.date_column > parse_datestr(''2018-01-01''))] # works df[''date_column''] = pd.to_datetime(df[''date_column'']) df[(df.date_column > ''2018-01-01'') & (df.date_column < ''2018-02-28'')]


Suponiendo que el inicio es una fecha y hora, úsala así:

if not start or date < start.date(): start = date

No creo que haya necesidad de convertir la fecha en datetime en Python, ya que puedes hacer lo opuesto y comparar.

O bien, tiene otros métodos para crear una nueva fecha y hora utilizando la fecha para convertir y la hora a las 00:00.


Sus variables de inicio y fecha son de tipo diferente, supongo. Uno es un horario y uno es una fecha. Es posible que deba mostrar más código para obtener ayuda decente.

Pero mira esto: http://docs.python.org/library/datetime.html#available-types

Le dice que datetime.datetime tiene atributos como día, mes y año, al igual que datetime.date.