Create list with days of month

Viewed 408

Hi everyone! I'm trying to generate list with dates of current month, but it generates wrong: from 2nd january to 1st february, I need list starts from 1st day of current month to last - 1 to 31, for example.

I have already searched the site and on Google, but so far I have not found anything. What am I doing wrong?

import datetime

year = 2021
month = 1
my_date = datetime.date(year, month, 1)
delta = datetime.timedelta(days=1)
dates = []

while my_date.month == month:
    dates.append((my_date + delta).strftime('%d-%b-%Y'))
    my_date += delta

print(dates)
print(len(dates))
1 Answers

That's because you are adding the date delta twice. Remove the first delta addition:

import datetime

year = 2021
month = 1
my_date = datetime.date(year, month, 1)
delta = datetime.timedelta(days=1)
dates = []

while my_date.month == month:
    dates.append((my_date).strftime('%d-%b-%Y'))
    my_date += delta

print(dates)
print(len(dates))

Output:

>>> print(dates)
['01-Jan-2021', '02-Jan-2021', '03-Jan-2021', '04-Jan-2021', '05-Jan-2021', '06-Jan-2021', '07-Jan-2021', '08-Jan-2021', '09-Jan-2021', '10-Jan-2021', '11-Jan-2021', '12-Jan-2021', '13-Jan-2021', '14-Jan-2021', '15-Jan-2021', '16-Jan-2021', '17-Jan-2021', '18-Jan-2021', '19-Jan-2021', '20-Jan-2021', '21-Jan-2021', '22-Jan-2021', '23-Jan-2021', '24-Jan-2021', '25-Jan-2021', '26-Jan-2021', '27-Jan-2021', '28-Jan-2021', '29-Jan-2021', '30-Jan-2021', '31-Jan-2021']
>>> print(len(dates))
31
Related