Подтвердить что ты не робот

Устранение неполадок "дескриптор" дата "требует объекта" 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'

Что я делаю неправильно?

4b9b3361

Ответ 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, чтобы сделать то же самое, прежде чем использовать какую-либо операцию с ним.