创建日期对象时的TypeError

时间:2016-03-04 14:15:24

标签: python date datetime integer

我试图从整数创建一个datetime.date对象,这是我的代码:

datetime.date(2011, 1, 1)

它给了我这个错误:

TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'

5 个答案:

答案 0 :(得分:4)

如果您执行以下操作,它将整齐地工作:

//Checks if request has file or not
    if ($request->hasFile('pic')) {
//checks if file is uploaded or not
            if ($request->file('pic')->isValid()) {
                $extension = $request->file('pic')->getClientOriginalExtension();
                $imageName = str_random(60);
                $request->file('pic')->move(base_path() . 'file/save/location', $imageName.".".$extension);
                }
    }

但是,如果你这样做:

>>> import datetime
>>> datetime.date(2011,1,1)
datetime.date(2011, 1, 1)

然后

from datetime import datetime

您实际调用的方法是datetime.date(2011,1,1) ,这将失败:

datetime.datetime.date(2011,1,1)

答案 1 :(得分:3)

回答,基于上面非常慷慨的贡献。

问题在于日期时间库包含一个日期时间类,对于不熟悉的人来说有时会让人感到困惑。

总结一下,如果你这样做:

import datetime
datetime.date(2011, 1, 1)

你得到了

>>> datetime.date(2011, 1, 1)

由于您使用的是日期时间库的日期类。但是,如果你这样做

from datetime import datetime
datetime.date(2011, 1, 1)

你会得到

>>>TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'

因为你(无意中)使用了datetime库的datetime类,相当于:

datetime.datetime.date(2011, 1, 1)

并且datetime库的datetime类没有日期方法

答案 2 :(得分:1)

只需使用正确的import即可设置:

>>> from datetime import date
>>> today = date.today()
>>> today
datetime.date(2016, 3, 4)
>>> date(2016, 3, 4)
datetime.date(2016, 3, 4)

答案 3 :(得分:1)

错误可能是由于您的import statement

从以下位置更改:

from datetime import datetime

要:

import datetime

答案 4 :(得分:1)

>>> from datetime import datetime
>>> date = datetime(year=2011,month=1,day=1)
>>> print date
2011-01-01 00:00:00
>>> 

官方文件:datetime Objects