# Python round time to nearest 15 minutes

Being able to round a DateTime object in Python to the nearest quarter hour can be extremely helpful for feature engineering. In this post, I will explain how to do this simply in multiple variations.

Being able to round a DateTime object in Python to the nearest quarter hour can be extremely helpful for feature engineering. In this post, I will explain how to do this simply in multiple variations.

## How do you round to the nearest quarter hour from a DateTime object in Python?

Python doesnβt have built-in functionality for rounding a DateTime to the nearest quarter hour, as it does for seconds, minutes, and hours. Therefore, in order to round to the nearest 15 minutes, we have to create a custom function to do this.

## Python round time to nearest 15 minutes

In order to round to the nearest 15 minutes we need to use a combination of `round` and `timedelta`. In this code example we combine these operations into a simple function whose inputs are the DateTime that will be rounded, and the time window to round towards, which in our case will be 15 minutes.

``````from datetime import datetime, timedelta

def round_dt(dt, delta):
return datetime.min + round((dt - datetime.min) / delta) * delta

delta = timedelta(minutes=15)

dt = datetime(2022, 9, 1, 14, 28, 0)
print(round_dt(dt,delta))

dt = datetime(2022, 9, 1, 14, 20, 0)
print(round_dt(dt,delta))

"""
Output:

2022-09-01 14:30:00
2022-09-01 14:15:00
"""

``````

## Python round DateTime up to nearest 15 minutes using ceil

The previous example uses `round` which will round to the nearest 15 minutes, whether that is up or down. However, we may always want to round upwards. This requires only a tiny change to the example we saw above, where we use `math.ceil` instead of `round`.

``````from datetime import datetime, timedelta
import math

def round_dt(dt, delta):
return datetime.min + math.ceil((dt - datetime.min) / delta) * delta

delta = timedelta(minutes=15)

dt = datetime(2022, 9, 1, 14, 28, 0)
print(round_dt(dt,delta))

dt = datetime(2022, 9, 1, 14, 20, 0)
print(round_dt(dt,delta))

"""
Output:

2022-09-01 14:30:00
2022-09-01 14:30:00
"""

``````

## Python round DateTime down to nearest 15 minutes using floor

If you want to always round down to the nearest 15 minutes then we need to use `math.floor` instead of `round`.

``````from datetime import datetime, timedelta
import math

def round_dt(dt, delta):
return datetime.min + math.floor((dt - datetime.min) / delta) * delta

delta = timedelta(minutes=15)

dt = datetime(2022, 9, 1, 14, 28, 0)
print(round_dt(dt,delta))

dt = datetime(2022, 9, 1, 14, 20, 0)
print(round_dt(dt,delta))

"""
Output:

2022-09-01 14:15:00
2022-09-01 14:15:00
"""

``````

## References

Pandas

### Stephen Allwright Twitter

I'm a Data Scientist currently working for Oda, an online grocery retailer, in Oslo, Norway. These posts are my way of sharing some of the tips and tricks I've picked up along the way.