# Python Program to Count date on a particular weekday in given range of Years

• Last Updated : 06 Jun, 2021

Given a date, our task is to get the weekday index and year range, compute the total occurrence of the date on a particular weekday in the year range.

Example:

Input : date = 13, weekdy = 5, strt, end = 1950, 2020

Output : 120

Explanation : Total dates with Friday 13 from 1950 – 2020 is 120.

Input : date = 13, weekdy = 1, strt, end = 1950, 2050

Output : 173

Explanation : Total dates with Monday, 13 from 1950 – 2050 is 173.

Method 1 : Using loop + weekday()

In this, we run a nested loop from start year to end the year and within each year, each month is checked with a date to be exact weekday as required, if found, the counter is incremented.

## Python3

 `# Python3 code to demonstrate working of``# Count date on weekday in Year Range``# Using loop + weekday()``from` `datetime ``import` `datetime`` ` `# initializing date``date ``=` `13`` ` `# initializing weekday``weekdy ``=` `5`` ` `# initializing range of Years``strt, end ``=` `1950``, ``2020`` ` `# printing Number``print``(``"The date, weekday : "` `+` `str``(date) ``+` `" "` `+` `str``(weekdy))`` ` `res ``=` `0``for` `year ``in` `range``(strt, end ``+` `1``):`` ` `    ``# checking each month for same date``    ``# weekday combination``    ``for` `month ``in` `range``(``1``, ``13``):``        ``if` `datetime(year, month, date).weekday() ``=``=` `weekdy:``            ``res ``+``=` `1`` ` `# printing result``print``(``"Total dates with same weekday : "` `+` `str``(res))`

Output:

```The date, weekday : 13 5
Total dates with same weekday : 120```

Method 2 : Using sum() + generator expression

Similar to the above method, the only difference being generator expression is used for the task of a nested loop, sum() performs the task of summing the correct found year, month combination.

## Python3

 `# Python3 code to demonstrate working of``# Count date on weekday in Year Range``# Using sum() + generator expression``from` `datetime ``import` `datetime`` ` `# initializing date``date ``=` `13`` ` `# initializing weekday``weekdy ``=` `5`` ` `# initializing range of Years``strt, end ``=` `1950``, ``2020`` ` `# printing Number``print``(``"The date, weekday : "` `+` `str``(date) ``+` `" "` `+` `str``(weekdy))`` ` `# sum performs accumulation``res ``=` `sum``(datetime(year, month, date).weekday() ``=``=` `weekdy``          ``for` `year ``in` `range``(strt, end ``+` `1``) ``for` `month ``in` `range``(``1``, ``13``))`` ` `# printing result``print``(``"Total dates with same weekday : "` `+` `str``(res))`

Output:

```The date, weekday : 13 5
Total dates with same weekday : 120```

My Personal Notes arrow_drop_up