Creating a date using another date in python using datetime module

Question:

I am making a simple program to calculate the difference between two dates: A specified date and the current date using datetime module.

def difference(current, until):
    year, month, day = current.year, until.month, until.date
    print("Year:", current.year, "Type:", type(current.year))
    this_year = datetime.datetime(year, month, day)
    return this_year - current

I can see that type(current.year) is an ‘int’. However, when I try to make a new date, an error occurs. Output:

Year: 2023 Type: <class 'int'>
    this_year = datetime.datetime(year, month, day)
TypeError: an integer is required (got type builtin_function_or_method)
Asked By: charlie s

||

Answers:

tl;dr

Change

year, month, day = current.year, until.month, until.date

to

year, month, day = current.year, until.month, until.day

The current.year is definitely an integer. The issue is with your until.date variable that is getting assigned to day.

As mentioned in @chepner’s comment: until.date is a bound method that returns a datetime.date object. Read more in the documentation about it here – https://docs.python.org/3/library/datetime.html#date-objects

Meanwhile, changing your until.date to until.day will fix your issue.

Answered By: xprilion
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.