cronuru
Pattern

Every Monday

0 0 * * 1
0 0 0 ? * MON
0 0 * * 1
0 0 ? * MON *
0 0 0 * * MON
0 0 * * 1

Runs at 00:00 every Monday — 1 invocation per week, on the Unix day-of-week 1 (Monday).

Use in your stack

# Every Monday at midnight
0 0 * * 1 /usr/local/bin/weekly-report.sh

# Equivalent with name form
0 0 * * MON /usr/local/bin/weekly-report.sh
{ "cron": "0 0 0 ? * MON", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
  name: weekly-report
spec:
  schedule: "0 0 * * 1"
  timeZone: "UTC"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: report
            image: my-image:latest
          restartPolicy: OnFailure
cron(0 0 ? * MON *)
@Scheduled(cron = "0 0 0 * * MON")
public void everyMonday() { /* ... */ }
on:
  schedule:
    - cron: '0 0 * * 1'

Next runs

Pick a timezone to see when this expression fires next.

Next 10 runs
  1. 012026-07-06T00:00:00.000Z
  2. 022026-07-13T00:00:00.000Z
  3. 032026-07-20T00:00:00.000Z
  4. 042026-07-27T00:00:00.000Z
  5. 052026-08-03T00:00:00.000Z
  6. 062026-08-10T00:00:00.000Z
  7. 072026-08-17T00:00:00.000Z
  8. 082026-08-24T00:00:00.000Z
  9. 092026-08-31T00:00:00.000Z
  10. 102026-09-07T00:00:00.000Z

Variations

Common use cases

  • Weekly summary reports of the prior week's activity.
  • Resetting weekly counters or quotas.
  • Pulling fresh weekly data from a slower upstream system.
  • Sending start-of-week emails to teams or customers.

Gotchas

  • Day-of-week numbering: Unix uses Monday = 1, Sunday = 0. Quartz uses Monday = 2, Sunday = 1. The Quartz equivalent is `0 0 0 ? * MON` or `0 0 0 ? * 2`.
  • If the timezone isn't pinned, "midnight Monday" can fire late Sunday in some timezones, depending on the server.
  • AWS EventBridge: `0 0 ? * MON *`. Prefer name form (`MON`) over numeric — works across all dialects.

0 0 * * 1 is the Monday-at-midnight weekly schedule. Combined with a timezone pin, it’s the standard “start of the work week” cron.

Frequently asked questions

What does `0 0 * * 1` mean?
Minute `0`, hour `0` (midnight), day-of-month `*` (any), month `*` (any), day-of-week `1` (Monday in Unix). So the job fires at midnight every Monday — one invocation per week.
Why does `0 0 * * 1` use `1` for Monday in Unix but `2` in Quartz?
Different day-numbering conventions. Unix cron numbers days 0–6 with Sunday at 0 (so Monday is 1). Quartz numbers days 1–7 with Sunday at 1 (so Monday is 2). Use the name form (`MON`) to avoid the mismatch — names work the same way in every dialect.
Is `0 0 * * 1` the same as `@weekly`?
Yes, on Linux crontab. `@weekly` is shorthand for `0 0 * * 0` — Sunday at midnight. To get Monday-at-midnight, write the explicit form `0 0 * * 1` or `0 0 * * MON`. There's no `@monday` shortcut.
How do I run weekly on a different day?
Change the last field. `0 0 * * 0` is Sunday, `0 0 * * 2` is Tuesday, `0 0 * * 5` is Friday, and so on (in Unix dialects where Sun=0). Or use name form: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, `SUN`.

Browse all cron patterns

Every schedule Cronuru documents, with its expression and code snippets for six dialects.