90 votes

ne peut pas comparer datetime.datetime à datetime.date

J'ai le code suivant et j'obtiens l'erreur ci-dessus. Comme je suis nouveau sur python, j'ai du mal à comprendre la syntaxe ici et comment je peux corriger l'erreur :

 if not start or date < start: start = date

120voto

juankysmith Points 2589

Il existe une datetime.date() pour convertir d'une datetime en une date.

Pour faire la conversion inverse, vous pouvez utiliser cette fonction datetime.datetime(d.year, d.month, d.day)

16voto

Imran Points 20117

Vous pouvez utiliser la datetime.datetime.combine pour comparer l'objet date à l'objet datetime, puis comparer l'objet converti avec l'autre objet 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

12voto

Sahil kalra Points 945

En supposant que le début est une date/heure, utilisez-le comme ceci :

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

Je ne pense pas qu'il soit nécessaire de convertir la date en datetime en python, car vous pouvez simplement faire le contraire et comparer.

Ou bien vous avez d'autres méthodes pour créer une nouvelle datetime en utilisant la date à convertir et l'heure à 00:00.

2voto

jmunsch Points 709

Je recevais l'erreur ci-dessus lors de l'utilisation de pandas , cependant, parce que le date_column était la chaîne que j'ai perdu beaucoup de temps sans me rendre compte que je formatais la mauvaise chose :

 # 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')]

1voto

naeg Points 1737

Vos variables de début et de date sont de type différent, je suppose. L'un est une date-heure et l'autre est une date. Vous devrez peut-être montrer plus de code pour obtenir une aide décente.

Mais regardez ceci : http://docs.python.org/library/datetime.html#available-types

Il vous indique que datetime.datetime a des attributs comme le jour, le mois et l'année, tout comme datetime.date.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X