Python can';t将datetime.datetime与datetime.date进行比较
我有以下代码,并得到上述错误。由于我是python新手,我在理解这里的语法以及如何修复错误方面遇到了困难:Python can';t将datetime.datetime与datetime.date进行比较,python,Python,我有以下代码,并得到上述错误。由于我是python新手,我在理解这里的语法以及如何修复错误方面遇到了困难: if not start or date < start: start = date 如果不是开始或日期'2018-01-01')和(df.date_栏
if not start or date < start: start = date
如果不是开始或日期
我想您的变量start和date是不同类型的。一个是日期时间,一个是日期。您可能需要显示更多代码才能获得适当的帮助
但看看这个:
它告诉您datetime.datetime具有诸如day、month和year之类的属性,就像datetime.date一样。有一个
datetime.date()
方法用于将datetime转换为日期
要进行相反的转换,可以使用此函数
datetime.datetime(d.year,d.month,d.day)
您可以使用datetime.datetime.combined
方法将日期对象与日期时间对象进行比较,然后将转换后的对象与其他日期时间对象进行比较
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
假设start是datetime,请按如下方式使用:
if not start or date < start.date(): start = date
如果不是开始或日期
我认为在python中不需要将date转换为datetime,因为您可以做相反的事情并进行比较
或者,您可以使用要转换的日期和00:00的时间来创建新的日期时间。当您尝试比较日期字段(
DateField
)和日期时间字段(DateTimeField
)时,会出现此问题
解决方案是检查在模型中定义字段的位置,并确保类型一致
我建议您将所有
DateField
替换为DateTimeField
我在使用pandas
时收到上述错误,但是,因为date\u列是字符串,我浪费了很多时间,没有意识到我格式化了错误的内容:
# 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')]
#不起作用
df[(df.date\u column>parse\u datestr('2018-01-01'))]
#工作
df['date\u column']=pd.to\u datetime(df['date\u column'])
df[(df.date_栏>'2018-01-01')和(df.date_栏<'2018-02-28')]
哇,问题和答案太旧了,需要更新。将datetime.datetime对象转换为datetime.date对象非常简单:
somestringtext = '7.04.2021'
datetime_datetime_object = datetime.strptime(somestringtext, '%d.%m.%Y')
### returns datetime.datetime(2021, 4, 7, 0, 0)
datetime_date_object = datetime.date(datetime_datetime_object)
datetime对象和date对象不相同,无法比较
datetime_datetime_object == datetime_date_object
### returns False
除非将它们转换为相同的格式:
datetime.date(datetime_datetime_object) == datetime_date_object
### returns True
请提供更多的代码,以便我们可以看到涉及的数据类型。在比较之前,您很可能需要将datetime.date转换为datetime.datetime。这里的语法是什么?如何将datetime.datetime转换为datetime.date,或者将datetime.date转换为datetime.date?这似乎是python的一个副本,我认为python抛出这样一个异常是愚蠢的-为什么不允许将datetime与日期进行比较?要进行相反的转换,您只需执行日期datetime.datetime(d.year,d.month,d.day)
(datetime.date)我遇到了一个与此相关的问题,我改为DateTimeField,但仍然出现了这个错误。我发现,当我创建对象时,我使用了一个日期,而不是一个DateTimeI。我在将日期字段
与日期时间进行比较时遇到了相同的错误。现在()
我通过简单地添加.date()来修复它
最后是这样的:datetime.now().date()
这是一个非常好的、不太复杂的解决方案