Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 比较两个日期时出错_Python_Date_Datetime - Fatal编程技术网

Python 比较两个日期时出错

Python 比较两个日期时出错,python,date,datetime,Python,Date,Datetime,尝试在Python中比较两个日期。当我运行type()检查时,两者都显示为 然而,当我对这两个日期进行简单检查时,我得到以下错误: AttributeError:'datetime.date'对象没有属性'date' 谁能告诉我我做错了什么吗。代码如下: d_today = date.today() oldestDate = d_today - BDay(750) avgArray2 = [x for x in avgArray if x[0] >= oldestDate.date()]

尝试在Python中比较两个日期。当我运行type()检查时,两者都显示为

然而,当我对这两个日期进行简单检查时,我得到以下错误:

AttributeError:'datetime.date'对象没有属性'date'

谁能告诉我我做错了什么吗。代码如下:

d_today = date.today()
oldestDate = d_today - BDay(750)
avgArray2 = [x for x in avgArray if x[0] >= oldestDate.date()]

print type(oldestDate.date())
print type(avgArray[0][0])
以及输出:

<type 'datetime.date'>
<type 'datetime.date'>
avgArray2 = [x for x in avgArray if x[0].date() >= oldestDate.date()]
AttributeError: 'datetime.date' object has no attribute 'date'

avgArray2=[x代表avgArray中的x,如果x[0].date()>=oldestDate.date()]
AttributeError:'datetime.date'对象没有属性'date'
关于如何构建“avgArray”的完整代码:

d_today = date.today()
d_ref = d_today - BDay(66)
lastDateData = dates[0]

avgArray = []

while (d_ref >= lastDateData):
    avg_data = [x for x in stockData_sorted if (x[0] >= d_ref and x[0] <= d_ref + BDay(22))]
    avg_dates = [d[0] for d in avg_data]
    avg_graphData = [d[1] for d in avg_data]

    workingAvg = sum(avg_graphData)/len(avg_graphData)
    avgArray.append((d_today,workingAvg))

    d_today = d_today - BDay(1)
    d_ref = d_ref - BDay(1)
d_today=date.today()
d_ref=d_今日-B日(66)
lastDateData=日期[0]
avgArray=[]
而(d_ref>=lastDateData):

avg_data=[x代表stockData中的x,如果(x[0]>=d_ref和x[0]您已经有两个
datetime.date
实例,则根据您的输出进行排序:

<type 'datetime.date'>
<type 'datetime.date'>
只是

应该行得通

补充:尽管有误导性的输出
x[0]
似乎不是
datetime.date
而是一个时间戳(在这种情况下我无法解释输出)。如果是这样的话

datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate

可能会更好。

您有一个
'pandas.tslib.Timestamp'
不是一个普通的datetime对象;它没有
.date()
方法

 avgArray2 = [x for x in avgArray
              if datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate.date()]

print([type(x[0])for x in avgArray])
的结果是什么?
下面是输出结果——这就是为什么我使用“.date()”调用来转换为日期时间日期(或者我认为是这样)avgArray由什么组成?你能给出这个数组构建的代码吗?它是从PSQL数据库中提取的数据库。它提取的两个字段及其数据库编码是:日期(时间戳)和离散度(数字)。我在最初的帖子中添加了关于avgArray是如何构建的完整代码。这让我很困惑。当我像你建议的那样运行代码时,我得到了以下错误:avgArray2=[x for x in avgArray if x[0]>=oldestDate]File“tslib.pyx”,第694行,in pandas.tslib.\u Timestamp.\u richcmp\u(pandas/tslib.c:12256)TypeError:无法将类型“Timestamp”与编辑A时的类型“date”进行比较以提及此异常。感谢帮助,我没有意识到它没有日期()方法。虽然现在我遇到了此错误:TypeError:描述符“date”需要一个“datetime.datetime”对象,但收到了一个“int”,最终使其正常工作。这是一个我不久前就应该意识到的简单错误-只需将函数调用为:date(x[0]。year,x[0]。month,x[0]。day)。再次感谢您的帮助。
datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate
 avgArray2 = [x for x in avgArray
              if datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate.date()]