How to get last week number with year?

93 views Asked by At

I want to create a function that gives last week with the year

for example, the current week number is 19, so the function should give the result 2023_W18. And the weeks should start from Monday to Sunday. So I run the script on Monday, and it will give last week's number.

I found a few examples:

>>> import datetime
>>> datetime.date(2010, 6, 16).isocalendar()[1]
24

but how to get last week's number? Do I need to first subtract 7 days from the current day? It should also support when the year change.

2

There are 2 answers

0
Ashutosh Kumar On
import datetime

today = datetime.date.today()

last_week = today - datetime.timedelta(days=7)

last_week_year, last_week_number, _ = last_week.isocalendar()

print(f"Last week number with year: {last_week_year} - Week {last_week_number}")

    
0
0stone0 On

You can use relativedelta to remove 1 week from a datetime.

Then use isocalendar() to get the week number (on index 1):

import datetime
from dateutil.relativedelta import relativedelta

def getLastWeekNumber(date):
    last = date - relativedelta(weeks=1)
    return last.isocalendar()[1]

# Test today
print(getLastWeekNumber(datetime.datetime.now()))
# 18

# Test 2010, 6, 16
print(getLastWeekNumber(datetime.date(2010, 6, 16)))
# 23

Try it online!