# Count Working Days Between Two Dates Excluding Weekends in Python

In this tutorial youâ€™ll learn how to count working days between two dates using the Python programming language.

The structure for the tutorial can be seen below:

Letâ€™s get started with it!

## Importing Modules and Example Data Construction

As a first step, we have to import the NumPy library as well as date and timedelta from the datetime module:

```import numpy as np
from datetime import date, timedelta```

Now we will construct some data objects that represent our start and end dates.

```start = date(2022, 11, 1)
end = date(2022, 11, 30)```

## Example 1: A More Hands-On Approach

Firstly, we will make a list of days between the start and end dates.

```all_days = []
for x in range((end - start).days):
all_days.append(start + timedelta(days = x+1))```

Then, we will iterate through the list and check each day individually, if it is a day on the weekend or not. By counting the days which are not in weekends, we will get the number of business days between the two dates.

```count = 0
for day in all_days:
if day.weekday() < 5:
count += 1

print(count)
# 21```

As you can see based on the previous output, the calculated number of business days is 21.

## Example 2: Using busday() Function from NumPy

We can simply use the busday() function which lets us calculate the number of work days in a single line of code.

```print(np.busday_count(start, end))
# 21```

The output of the code snippet is 21, i.e. the same result as in Example 1, but with a much shorter syntax.

## Example 3: Calculating Number of Working Day Considering Vacation Days

In this example we will use the busday() function once again, but this time we will specify some vacation dates to exclude. These dates have to be specified manually as shown below.

```holiday_set = ['2022-11-21']
print(np.busday_count(start, end, holidays=holiday_set))
# 20```

Here, the output is one day less compared to the previous outputs. This is because 2022-11-21 is not a day on the weekend, as shown below.

```print(date(2022, 11, 21).weekday())
# 0```

The output of the previous line of code is 0, which means that this day is a Monday.

## Video, Further Resources & Summary

Are you looking for further information on how to count the number of business days? Then you should have a look at the following YouTube video of the Statistics Globe YouTube channel.

Furthermore, you could have a look at some of the other tutorials on Statistics Globe:

This page was created in collaboration with Ã–mer Ekiz. You may have a look at Ã–merâ€™s author page to read more about his academic background and the other articles he has written for Statistics Globe.

Subscribe to the Statistics Globe Newsletter