Back to examples
Monthly
Medium
Quartz

Cron expression for the first Monday of every month

Run a scheduled job on the first Monday of every month at midnight.

Cron expression0 0 0 ? * MON#1
Runs on the first Monday of every month at midnight.

Primary dialect: Quartz


Next run examples

Static preview generated for the primary dialect. AWS examples use UTC; other examples use Europe/Berlin for display.

Jul 6, 2026, 12:00 AM

Aug 3, 2026, 12:00 AM

Sep 7, 2026, 12:00 AM

Oct 5, 2026, 12:00 AM

Nov 2, 2026, 12:00 AM


Dialect versions

Unix / Linux
0 0 0 ? * MON#1

Standard Unix/Linux cron expression when this schedule is expressible with five fields.

AWS EventBridge
cron(0 0 ? * MON#1 *)

AWS EventBridge cron schedules are evaluated in UTC. Use rate(...) for simple fixed intervals when possible.

Quartz
0 0 0 ? * MON#1

Quartz includes a leading seconds field and supports additional day operators.

Kubernetes
Not directly expressible

Kubernetes CronJobs use standard five-field cron syntax. Non-standard operators require job-level logic.


Variants

First Monday at 09:00
cron(0 9 ? * MON#1 *)

AWS-style first Monday at 09:00 UTC.

Second Monday
0 0 0 ? * MON#2

Quartz expression for the second Monday.

First weekday of month
0 0 0 1W * ?

Quartz expression for the nearest weekday to the first day.


Kubernetes notes

  • Kubernetes CronJobs use standard five-field cron syntax.
  • "Set concurrencyPolicy
  • restartPolicy
  • and history limits based on expected runtime and failure behavior."

Common mistakes

  • Forgetting to confirm which timezone the scheduler uses.
  • Assuming the schedule starts relative to deployment time instead of matching wall-clock fields.

FAQ

Can Unix cron express the first Monday of the month?

Not exactly with schedule fields alone. Use a script guard or a scheduler dialect like AWS or Quartz that supports `#`.

What does MON#1 mean?

`MON#1` means the first Monday of the month in AWS EventBridge and Quartz-style cron.

Related cron resources