Home › Convert › Quartz to Apache Airflow
Convert Quartz cron to Apache Airflow
Quartz expressions look similar to Apache Airflow, but the differences matter. Paste yours below; the result is checked against the original run times.
What changes from Quartz to Apache Airflow
- Apache Airflow has no seconds field, so a schedule that fires on specific seconds cannot be converted exactly. The seconds value is dropped and flagged.
- Quartz numbers weekdays 1-7 starting on Sunday. Apache Airflow starts on Sunday = 0, so every weekday number is reduced by one.
- Apache Airflow does not use
?, so it is replaced with*. - Apache Airflow has no year field. A specific year would be dropped, so the schedule would repeat every year; the converter warns you.
- Quartz requires both day fields to match; Apache Airflow fires when either does. Schedules that restrict both are flagged.
Worked examples
| Schedule | Quartz | Apache Airflow |
|---|---|---|
| every minute | 0 * * * * ? | * * * * * |
| every 5 minutes | 0 */5 * * * ? | */5 * * * * |
| every 10 minutes | 0 */10 * * * ? | */10 * * * * |
| every 15 minutes | 0 */15 * * * ? | */15 * * * * |
| every 30 minutes | 0 */30 * * * ? | */30 * * * * |
| every hour | 0 0 * * * ? | 0 * * * * |
| every 2 hours | 0 0 */2 * * ? | 0 */2 * * * |
| every 3 hours | 0 0 */3 * * ? | 0 */3 * * * |
Conversions that come with a warning
- every 10 seconds:
0/10 * * * * ?→* * * * *. Apache Airflow (croniter) has no seconds field; the seconds value "0/10" was dropped. - every 30 seconds:
0/30 * * * * ?→* * * * *. Apache Airflow (croniter) has no seconds field; the seconds value "0/30" was dropped.
Field layout and time zones
second (0-59), minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (1-7, 1 = Sunday), year (1970-2199, optional).
Quartz uses the JVM default time zone unless you set one: CronScheduleBuilder.cronSchedule(expr).inTimeZone(TimeZone.getTimeZone("UTC")).
minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-7, 0 and 7 = Sunday).
Airflow defaults to UTC. On a time-zone-aware DAG a cron schedule follows wall-clock time, so a daily 00:00 US/Eastern run moves between 04:00 and 05:00 UTC across daylight saving changes.
Go the other way
Convert Apache Airflow to Quartz, or open the Quartz builder or the Apache Airflow builder.
Frequently asked questions
How do I convert a Quartz cron expression to Apache Airflow?
Paste it into the converter above with Quartz as the source and Apache Airflow as the target. For example, 0 * * * * ? becomes * * * * *.
Is every Quartz expression convertible to Apache Airflow?
Yes for the common schedules we tested (32 of 32), though unusual expressions with special characters might need manual review.
Does Apache Airflow run in the same time zone as Quartz?
Not necessarily. Conversion changes the syntax, not the time zone. Check where each system evaluates the schedule before you rely on the same clock times.