2016-03-04 3 views
4

Я пытаюсь создать datetime.date объект из целых чисел, это мой код:TypeError при создании объекта даты

datetime.date(2011, 1, 1) 

Это дает мне эту ошибку:

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

Подсказка: вы выполняете 'из datetime import datetime' или' i mport datetime'? (Я предполагаю, что бывший ...) –

+0

'>>> import datetime >>> datetime.date (2011,1,1) datetime.дата (2011, 1, 1) 'не проблема, я не понимаю. Если вы выполняете 'from datetime import datetime', вы на самом деле вызываете' datetime.datetime.date (2011,1,1) ', что не удастся. –

+0

привет Большое спасибо. Проблема в том, что я сделал из datetime import datetime. поэтому datetime.date в порядке, но datetime.datetime.date, очевидно, нет. больше –

ответ

4

Если вы сделаете следующее, он будет работать аккуратно:

>>> 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), который потерпит неудачу:

>>> datetime.datetime.date(2011,1,1) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 
1

Просто использовать надлежащий import и вы установите:

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

ошибка может быть связано с вашей import statement.

Изменить его из:

from datetime import datetime 

To:

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

Официальная документация: datetime Objects

3

ответ, основанный на очень щедрые взносы выше.

Проблема в том, что библиотека datetime включает класс datetime, который для непосвященных иногда сбивает с толку.

Чтобы завернуть, если вы:

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.date(2011, 1, 1) 

а Класс datetime библиотеки даты и времени не имеет метода даты

Смежные вопросы