无法将datetime.datetime与datetime.date进行比较

我有以下代码,正在获取上述错误。 由于我是新来的python我无法理解这里的语法,我怎么可以解决这个错误:

if not start or date < start: start = date 

有一个datetime.date()方法用于从date时间转换为date。

要做相反的转换,可以使用这个函数datetime.datetime(d.year, d.month, d.day)

您可以使用datetime.datetime.combine方法将date对象与date时间对象进行比较,然后将转换的对象与其他date时间对象进行比较。

 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 

假设开始是一个date时间,像这样使用它:

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

不认为有必要在Python中将date转换为date时间,因为您可以做相反的事情并进行比较。

否则,您可以使用其他方法来创build新的date时间,方法是使用date进行转换,并在00:00时间。

你可以通过使用前者的yearmonthday属性来构造后者,将datetime.date转换为datetime.datetime

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

感谢Steven提供的解决scheme。

我猜你的variables开始和date是不同的types。 一个是date时间,一个是date。 您可能需要显示更多的代码才能获得体面的帮助。

但看看这个: http : //docs.python.org/library/datetime.html#available-types

它告诉你datetime.datetime像datetime.date一样具有像day,month和year这样的属性。

当您试图比较date字段( DateField )和date时间字段( DateTimeField )时,会出现此问题。

解决scheme将检查您在模型中定义字段的位置,并确保types是统一的。

我build议你DateTimeFieldreplace所有的DateField