Monthly
0 9 1-7 * 1Run on the first Monday of every month at 09:00.
This preview is live: the table below shows the actual next run times for 0 9 1-7 * 1 in your time zone, recomputed in your browser. Change the expression, dialect, or zone to experiment, then copy the result.
0 9 1-7 * 1 meansPlain Unix cron has no "Nth weekday" operator, so the first Monday of the month is expressed with a trick: 0 9 1-7 * 1 fires at 9am on any day in the range 1–7 that is also a Monday. Since exactly one Monday falls in the first seven days of every month, this reliably hits the first Monday.
This day-of-month-AND-day-of-week emulation is one of the most useful idioms in cron. The same shape gives you the first of any weekday: 1-7 for the first occurrence, 8-14 for the second, and so on.
Unix cron has five fields. Here is what each one is doing in this expression:
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | minute = 0 |
| Hour | 9 | hour = 9 |
| Day of month | 1-7 | the range 1-7 (inclusive) of day-of-month |
| Month | * | every month |
| Day of week | 1 | day-of-week = 1 |
The same cadence written for the seven cron dialects you are most likely to meet. Copy the line for the system you target — the field count and day-of-week numbering differ between them.
| Scheduler | Expression | Copy |
|---|---|---|
| Unix / crontab | 0 9 1-7 * 1 | |
| GitHub Actions | 0 9 1-7 * 1 | |
| Kubernetes CronJob | 0 9 1-7 * 1 | |
| Vercel Cron | 0 9 1-7 * 1 | |
| Quartz | 0 0 9 1-7 * 1 * | |
| Spring | 0 0 9 1-7 * 1 | |
| AWS EventBridge | 0 9 1-7 * 1 * |
Dialect note: Quartz and EventBridge have a real first-Monday operator: 0 0 9 ? * MON#1 (Quartz) and 0 9 ? * MON#1 * (EventBridge). Use it instead of the 1-7 trick on those systems.
0 9 1-7 * 1This only works because most cron daemons treat day-of-month and day-of-week as AND when BOTH are restricted to non-wildcards inside a narrow range — behavior that is technically implementation-specific. Quartz/EventBridge express it cleanly with MON#1; prefer that where available.
0 9 1-7 * 1 means: Run on the first Monday of every month at 09:00. Plain Unix cron has no "Nth weekday" operator, so the first Monday of the month is expressed with a trick: 0 9 1-7 * 1 fires at 9am on any day in the range 1–7 that is also a Monday. Since exactly one Monday falls in the first seven days of every month, this reliably hits the first Monday.
Use 0 9 1-7 * 1 in the schedule's cron field. This only works because most cron daemons treat day-of-month and day-of-week as AND when BOTH are restricted to non-wildcards inside a narrow range — behavior that is technically implementation-specific. Quartz/EventBridge express it cleanly with MON#1; prefer that where available.
EventBridge uses six fields with a required year and a ? placeholder in one day field: 0 9 1-7 * 1 *. Wrap it as cron(0 9 1-7 * 1 *) in the console or CloudFormation.
Quartz is seconds-first with a trailing year, so the equivalent is 0 0 9 1-7 * 1 *. Remember Quartz numbers Sunday as 1, the opposite of Unix.
Browse the full set of cron pattern pages, or jump to the interactive tools: the cron expression builder for designing a schedule from scratch, the cron cheat sheet for a side-by-side reference, the cron timezone translator for moving a schedule between zones and dialects, and the GitHub Actions cron picker for DST-stable CI schedules.