无法将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时间。
你可以通过使用前者的year
, month
, day
属性来构造后者,将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议你用DateTimeField
replace所有的DateField
。