DataEngr

Tools, Cron and Airflow

What a cron schedule means, and what Airflow does with it.

Paste a cron expression or build one from a preset to see it described in plain words, its next runs in a timezone you choose, any daylight-saving gap or overlap ahead, and how Airflow's two timetable classes read the same schedule differently.

The fields of this cron expression
minutehourday of monthmonthday of week
02***

Runs daily at 02:00.

Australia/Sydney

Or start from a common schedule

Next 8 runs

Local time in Australia/Sydney

The next 8 runs of this schedule, in Australia/Sydney
#WeekdayDateLocal time
1Fri30 Oct 2026
2Sat31 Oct 2026
3Sun1 Nov 2026
4Mon2 Nov 2026
5Tue3 Nov 2026
6Wed4 Nov 2026
7Thu5 Nov 2026
8Fri6 Nov 2026

Daylight saving in the next 13 months

  • Sun 4 Apr 2027

    UTC+11:00 to UTC+10:00

    Clocks move back one hour on Sun 4 Apr 2027. Local times in the repeated hour occur twice, so croner runs a job scheduled in them once.

  • Sun 3 Oct 2027

    UTC+10:00 to UTC+11:00

    Clocks move forward one hour on Sun 3 Oct 2027. Local times in the skipped hour do not occur that day, so croner runs a job scheduled in them one hour later.

What Airflow does with this schedule

CronTriggerTimetable

Airflow 3 with the default scheduler.create_cron_data_intervals = False.

data_interval_start
Equal to the trigger time: a trigger timetable carries no data interval.
data_interval_end
Equal to the trigger time: a trigger timetable carries no data interval.

{{ ds }} is the logical date, set to data_interval_start, so on a daily schedule it is today's date, not yesterday's.

CronDataIntervalTimetable

Airflow 2.x (default), or Airflow 3 with scheduler.create_cron_data_intervals = True.

data_interval_start
The start of the interval that just finished.
data_interval_end
Equal to the trigger time: a data-interval timetable fires at the end of the interval it describes.

{{ ds }} is the logical date, set to data_interval_start, so on a daily schedule it is yesterday's date relative to the run that just triggered.

What it checks and does not

What Cron for Airflow checks and does not, one row per area
AreaChecksDoes not
DescriptionDescribes a five-field cron expression, or an @daily-style preset, in words.—
Next runsLists the next runs in an IANA timezone you choose, using croner.—
Daylight savingFlags gaps/overlaps in 13 months; a gap run shifts later, an overlap runs once.Does not reproduce Airflow's own DST handling; listed runs come from croner.
Airflow timetablesShows CronTriggerTimetable (Airflow 3 default) and CronDataIntervalTimetable (Airflow 2, or opted in).—
Scope—Does not detect your Airflow version/config, or model catchup, max_active_runs, pools or sensors.

Sources