Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python can';t将datetime.datetime与datetime.date进行比较_Python - Fatal编程技术网

Python can';t将datetime.datetime与datetime.date进行比较

Python can';t将datetime.datetime与datetime.date进行比较,python,Python,我有以下代码,并得到上述错误。由于我是python新手,我在理解这里的语法以及如何修复错误方面遇到了困难: if not start or date < start: start = date 如果不是开始或日期'2018-01-01')和(df.date_栏

我有以下代码,并得到上述错误。由于我是python新手,我在理解这里的语法以及如何修复错误方面遇到了困难:

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()
这是一个非常好的、不太复杂的解决方案