cronuru
Pattern

Weekends

0 0 * * 6,0
0 0 0 ? * SAT,SUN
0 0 * * 6,0
0 0 ? * SAT,SUN *
0 0 0 * * SAT,SUN
0 0 * * 6,0

Runs at 00:00 on Saturday and Sunday — 2 invocations per week, skipping weekdays.

Use in your stack

# Weekends at midnight
0 0 * * 6,0 /usr/local/bin/weekend-maintenance.sh

# Or with name form (clearer across dialects)
0 0 * * SAT,SUN /usr/local/bin/weekend-maintenance.sh
{ "cron": "0 0 0 ? * SAT,SUN", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
  name: weekend-maintenance
spec:
  schedule: "0 0 * * SAT,SUN"
  timeZone: "UTC"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: maintenance
            image: my-image:latest
          restartPolicy: OnFailure
cron(0 0 ? * SAT,SUN *)
@Scheduled(cron = "0 0 0 * * SAT,SUN")
public void weekendJob() { /* ... */ }
on:
  schedule:
    - cron: '0 0 * * 6,0'

Next runs

Pick a timezone to see when this expression fires next.

Next 10 runs
  1. 012026-07-04T00:00:00.000Z
  2. 022026-07-05T00:00:00.000Z
  3. 032026-07-11T00:00:00.000Z
  4. 042026-07-12T00:00:00.000Z
  5. 052026-07-18T00:00:00.000Z
  6. 062026-07-19T00:00:00.000Z
  7. 072026-07-25T00:00:00.000Z
  8. 082026-07-26T00:00:00.000Z
  9. 092026-08-01T00:00:00.000Z
  10. 102026-08-02T00:00:00.000Z

Variations

0 0 * * 6

Saturday at midnight only

0 0 * * 0

Sunday at midnight only

0 9 * * 1-5

Weekdays at 9 AM

Common use cases

  • Heavy weekly maintenance jobs (vacuum, reindex, backup verification).
  • Long-running ETL that's faster to run on the quiet weekend infrastructure.
  • Sending weekly summary digests on Sunday for the week ahead.
  • Periodic stress tests or chaos exercises that shouldn't disrupt business hours.

Gotchas

  • Day-of-week numbering: Unix uses `0` (Sunday) and `6` (Saturday). The order in the list doesn't matter — `0,6` and `6,0` are identical.
  • Quartz uses `1` (Sunday) and `7` (Saturday). The Quartz equivalent is `SAT,SUN` or `1,7`.
  • AWS EventBridge: `0 0 ? * SAT,SUN *` — uses `?` for day-of-month, name form recommended.
  • `0 0 * * 7` works in some Unix implementations as "Sunday at midnight" (treating 7 as another Sunday), but isn't portable. Use `0` for Sunday explicitly.

0 0 * * 6,0 runs at midnight on weekends. Often paired with a weekday-only schedule to cover the opposite case — for example, “send the digest at 9 AM weekdays, run the heavy report Sunday night.” Whenever you write a weekend schedule, prefer the name form (SAT,SUN) over numeric — the cross-dialect ambiguity isn’t worth the keystrokes saved.

Frequently asked questions

What does `0 0 * * 6,0` mean?
Minute `0`, hour `0` (midnight), day-of-month `*` (any), month `*` (any), day-of-week `6,0` (Saturday or Sunday in Unix where Sun=0, Sat=6). So the job fires at midnight on Saturday and Sunday.
Is `0,6` the same as `6,0` in day-of-week?
Yes — order doesn't matter in a comma list. Both `0,6` and `6,0` and `SUN,SAT` and `SAT,SUN` all fire on the same two days. Pick whichever reads more naturally.
Why do Unix and Quartz differ on Sunday's number?
Historical accident. Unix cron numbers days 0-6 with Sunday at 0, matching the C standard library's `tm_wday`. Quartz numbers days 1-7 with Sunday at 1, matching Java's `Calendar.DAY_OF_WEEK`. Use name form (`SAT`, `SUN`) to avoid the issue — names work the same way everywhere.
What about `0 0 * * SAT,SUN` — does that work?
Yes in Unix, Kubernetes, GitHub Actions, and Quartz. Name form `SAT,SUN` is the most portable way to express weekends — it's unambiguous across dialects and doesn't require remembering whether Sunday is 0 or 1.

Browse all cron patterns

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