ClockOrbit

Monthly

0 9 1-7 * 1

Run 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.

Next runs
valid
Upcoming runs
Sun, Dec 6 2026
09:00 UTC
in 30 days
Mon, Dec 7 2026
09:00 UTC
in 31 days
Sun, Jan 3 2027
09:00 UTC
in 58 days
Mon, Jan 4 2027
09:00 UTC
in 59 days
Mon, Feb 1 2027
09:00 UTC
in 87 days
Sun, Feb 7 2027
09:00 UTC
in 93 days
Mon, Mar 1 2027
09:00 UTC
in 115 days
Sun, Mar 7 2027
09:00 UTC
in 121 days
Sun, Apr 4 2027
09:00 UTC
in 149 days
Mon, Apr 5 2027
09:00 UTC
in 150 days
Sun, May 2 2027
09:00 UTC
in 177 days
Mon, May 3 2027
09:00 UTC
in 178 days
Sun, Jun 6 2027
09:00 UTC
in 212 days
Mon, Jun 7 2027
09:00 UTC
in 213 days
Sun, Jul 4 2027
09:00 UTC
in 240 days
Mon, Jul 5 2027
09:00 UTC
in 241 days
Sun, Aug 1 2027
09:00 UTC
in 268 days
Mon, Aug 2 2027
09:00 UTC
in 269 days
Sun, Sep 5 2027
09:00 UTC
in 303 days
Mon, Sep 6 2027
09:00 UTC
in 304 days
Sun, Oct 3 2027
09:00 UTC
in 331 days
Mon, Oct 4 2027
09:00 UTC
in 332 days
Mon, Nov 1 2027
09:00 UTC
in 360 days
Sun, Nov 7 2027
09:00 UTC
in 366 days
Sun, Dec 5 2027
09:00 UTC
in 394 days

What 0 9 1-7 * 1 means

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.

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.

Field-by-field breakdown

Unix cron has five fields. Here is what each one is doing in this expression:

FieldValueMeaning
Minute0minute = 0
Hour9hour = 9
Day of month1-7the range 1-7 (inclusive) of day-of-month
Month*every month
Day of week1day-of-week = 1

First Monday of the month in every scheduler

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.

SchedulerExpressionCopy
Unix / crontab0 9 1-7 * 1
GitHub Actions0 9 1-7 * 1
Kubernetes CronJob0 9 1-7 * 1
Vercel Cron0 9 1-7 * 1
Quartz0 0 9 1-7 * 1 *
Spring0 0 9 1-7 * 1
AWS EventBridge0 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.

When you would use 0 9 1-7 * 1

The gotcha worth knowing

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.

People also search for

cron first monday of the monthcron nth weekday of monthcrontab first mondaycron monthly meeting reminder

0 9 1-7 * 1 FAQ

What does the cron expression 0 9 1-7 * 1 mean?

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.

How do I write "first monday of the month" in GitHub Actions?

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.

How do I write "first monday of the month" for AWS EventBridge?

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.

What is the Quartz equivalent of 0 9 1-7 * 1?

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.

Related cron patterns

More cron tools

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.