Устранение неполадок "дескриптор" дата "требует объекта" datetime.datetime ", но получил" int "
В моем коде я спрашиваю у пользователя дату в формате dd/mm/yyyy
.
currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = datetime.date(int(year),int(month),int(day))
Это возвращает ошибку
TypeError: дескриптор 'date' требует объекта 'datetime.datetime', но получил 'int'
если я удалю int()
, тогда я получаю ту же ошибку, только он говорит, что получил 'str'
Что я делаю неправильно?
Ответы
Ответ 1
Кажется, что вы импортировали datetime.datetime
модуль вместо datetime
. Это должно работать, хотя:
import datetime
currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = datetime.date(int(year),int(month),int(day))
.. или это:
from datetime import date
currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = date(int(year),int(month),int(day))
Ответ 2
Импортируете как это?
from datetime import datetime
Затем вы должны изменить его так:
import datetime
Объяснение: В первом случае вы эффективно вызываете datetime.datetime.date()
, метод объекта datetime
в модуле datetime
. В более позднем случае вы создаете новый объект date()
с конструктором datetime.date()
.
В качестве альтернативы вы можете изменить импорт:
from datetime import datetime, date
а затем построить с помощью date(y,m,d)
(без префикса datetime.
).
Ответ 3
если у вас уже есть
from datetime import datetime
то вы можете построить так:
christmas = datetime(2013,12,25)
Ответ 4
Я могу воспроизвести ошибку, если я сделаю
from datetime import *
Он уходит, когда я делаю
import datetime
Итак, проверьте импорт.
Ответ 5
Вы можете использовать как datetime, так и datetime.datetime.
Напишите импорт следующим образом:
from datetime import datetime
import datetime as dt
time_1 = datetime.strptime('17:00:00', '%H:%M:%S')
time_1 = dt.time(time_1.hour, time_1.minute, time_1.second)
Ответ 6
Я подозреваю, что datetime
ссылается на объект, а не на модуль. Вероятно, у вас был следующий код (возможно, более сложный):
from datetime import datetime
currentdate = raw_input("Please enter todays date in the format dd/mm/yyyy: ")
day,month,year = currentdate.split('/')
today = datetime.date(int(year),int(month),int(day))
Таким образом вы вызываете метод date
класса datetime
вместо вызова функции date
модуля datetime
.
Вы можете напечатать объект datetime
, чтобы убедиться, что это действительно так:
>>> import datetime
>>> print datetime
<module 'datetime' (built-in)>
>>> print datetime.date(1, 1, 1)
0001-01-01
>>> datetime = datetime.datetime
>>> print datetime
<type 'datetime.datetime'>
>>> print datetime.date(1, 1, 1)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
print datetime.date(1, 1, 1)
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
Ответ 7
Ошибка предполагает, что ваш импорт выглядит нормально. Вместо этого, при выполнении операции с использованием даты и времени, убедитесь, что значения сначала преобразованы в формат даты и времени.
используйте pandas.to_datetime, чтобы сделать то же самое, прежде чем использовать какую-либо операцию с ним.