Batu Lab NotesPractical developer guides

Find the next weekday from a given date

By Batu · English technical notes

Also published in our Blogger archive.

To find the next occurrence of a weekday, use the integer convention of date.weekday(): Monday is 0 through Sunday is 6. The function calculates the forward distance with modular arithmetic. The or 7 is important: a zero remainder means the input is already the target weekday, but this article’s “next” contract requires the following occurrence rather than the same date.

For the supplied Friday, 2026-05-01, the target value 0 means Monday. The distance is three days, producing Monday 2026-05-04. The two assertions check the resulting date and confirm that it is Monday. They do not prove that target values outside 0 through 6 are valid, so production code should validate externally supplied weekday numbers if they can be malformed.

This is calendar arithmetic, not a business-calendar calculation. It can return a public holiday and does not take working hours, user locale preferences, or a timestamp’s time zone into account. Use a date only when the input and output are date-only concepts; convert an instant to the intended local date before applying a local-calendar rule. The example uses Python standard-library date, timedelta, and weekday() and works on Python 3.2+.

The weekday numbering and date addition rules are documented in Python’s datetime reference.

AI-assistance disclosure: This article was drafted with AI assistance and should be reviewed in its application context.

from datetime import date, timedelta


def next_weekday(start, target):
    days = (target - start.weekday()) % 7 or 7
    return start + timedelta(days=days)

next_monday = next_weekday(date(2026, 5, 1), 0)

assert next_monday == date(2026, 5, 4)
assert next_monday.weekday() == 0

print(next_monday.isoformat())
print(next_monday.weekday())
2026-05-04
0