Cron expressions to datetimes¶
To convert some cron expressions to future dates, I've been using croniter.
Installation¶
The croniter package is available on PyPI which means installation should be as simple as:
pip install croniter
Using¶
import arrow
from croniter import croniter
from dateutil import tz
# cron expression
expression = "30 6 * * *"
# getting events for the next 15 days
calculate_until = arrow.utcnow().shift(days=15).ceil("day")
# timezone
timezone = "America/Sao_Paulo"
if not croniter.is_valid(expression):
raise ValueError(f"Invalid when_expression: {expression}")
for next_event in croniter(expression, arrow.now(tz.gettz(timezone)).datetime):
next_date = arrow.get(next_event, tzinfo=tz.gettz(timezone))
if next_date > calculate_until:
break
print(next_date)
# 2020-07-17T06:30:00-03:00
# 2020-07-18T06:30:00-03:00
# 2020-07-19T06:30:00-03:00
# 2020-07-20T06:30:00-03:00
# 2020-07-21T06:30:00-03:00
# 2020-07-22T06:30:00-03:00
# 2020-07-23T06:30:00-03:00
# 2020-07-24T06:30:00-03:00
# 2020-07-25T06:30:00-03:00
# 2020-07-26T06:30:00-03:00
# 2020-07-27T06:30:00-03:00
# 2020-07-28T06:30:00-03:00
# 2020-07-29T06:30:00-03:00
# 2020-07-30T06:30:00-03:00
# 2020-07-31T06:30:00-03:00
Last update: July 16, 2020