Generate vectors of datetime in Python

Generating a range of datetime data is a common data analysis and simulation task. Here we show examples of generating datetime vectors for Python datetime and numpy.datetime64

Python datetime

Python datetime is often used as timezone-naïve with UTC as the assumed timezone. This custom avoids ambiguities when working with Pandas and Numpy, which are foundational for Python data science.

Generate a range of Python datetime like:

from __future__ import annotation
from datetime import datetime, timedelta


def datetime_range(start: datetime, end: datetime, step: timedelta) -> list[datetime]:
    """like range() for datetime"""
    return [start + i * step for i in range((end - start) // step)]


dt = datetime_range(datetime(2019, 12, 1), datetime(2020, 4, 1), timedelta(days=1))

Numpy datetime64

Numpy datetime64 generates a range of times like:

dt = numpy.arange('2019-12-01', '2020-04-01', dtype='datetime64[D]')

Pandas has the date_range function to generate time vectors.