相关文章推荐
大鼻子的煎鸡蛋  ·  TinyMCE ...·  3 月前    · 
慈祥的砖头  ·  DeadObjectException ...·  1 年前    · 
豪气的遥控器  ·  Database Engine ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'int' object

Ask Question

I've just encountered this issue, and couldn't find a reasonable answer for it on the front page of Google. It's similar to this question asked in 2011 , but for a newer version of Python, which results in a different error message.

What is causing these TypeError s?

Integers

import datetime
my_date = datetime.datetime.date(2021, 3, 2) 

Results in the error:

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'int' object

Strings

Similarly, replacing the integers with strings also gives the same error:

import datetime
my_date = datetime.datetime.date("2021", "3", "2") 

Gives:

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'str' object

Lists

And using a list gives the same error:

import datetime
my_date = datetime.datetime.date([2021, 3, 2]) 

Results in:

TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'list' object

Similarly, using from datetime import datetime and datetime.date will result in the following error messages respectively:

TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'int' object
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'str' object
TypeError: descriptor 'date' for 'datetime' objects doesn't apply to a 'list' object
                since the datetime.datetime.date() method actually doesn't take any arguments at all, the error message seems confusing indeed
– FObersteiner
                Mar 2, 2021 at 7:59
                @MrFruppes Yeah, that's what threw me. I don't program in Python so often, so that error message pop up didn't really indicate to me that I was trying to call a method on a class which hadn't been instantiated.
– Joundill
                Mar 2, 2021 at 19:36
                "It's similar to this question asked in 2011, but for a newer version of Python, which results in a different error message." That doesn't make it a different problem, and therefore doesn't make it a different question. The answers are the same: the code tries to call an instance method from the class, such that self is wrong. This version is probably better, though, because it's good to keep up to date.
– Karl Knechtel
                Jan 20 at 11:26
                That said, the same problem can be caused by any instance method of any class, and a quick search implies that it is asked a fair bit, with no clear canonical. (This would be it, since it's the most popular by far of the questions showing the exact new error message; but it isn't general enough.)
– Karl Knechtel
                Jan 20 at 11:27
                @KarlKnechtel You're correct that the general case pops up a fair bit, but I think this specific case is one people hit fairly often. 2 years ago I dropped my error message into Google and nothing came up, so I wrote this Q+A.
– Joundill
                Jan 22 at 20:34

The issue is that datetime.datetime.date() is a method on a datetime.datetime object. We were confusing the datetime module with the datetime.datetime class.

What we're really looking for is the datetime.date() constructor.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.