Curated cron expression
Every Sunday at Midnight Cron Expression: 0 0 * * 0
Decode 0 0 * * 0 for Sunday midnight, including weekday numbering, exact next-run behavior, timezone and DST concerns, weekly use cases, and platform conversions.
Meaning at a glance
0 0 * * 0
Run every Sunday at 00:00
Once per week at the start of Sunday.
Next-run example: At Sunday 00:01, the next nominal run is seven days later; at Saturday 23:00, it is one hour later.
How 0 0 * * 0 works
The final 0 selects Sunday in the Unix day-of-week field, and the two leading zeros select midnight. It fires at the boundary between Saturday and Sunday in the scheduler timezone.
Teams sometimes describe this as “Saturday night,” which is operationally ambiguous. Store and communicate the ISO date and timezone of the intended Sunday run.
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute zero |
| Hour | 0 | At midnight |
| Day of month | * | Any date that is Sunday |
| Month | * | Every month |
| Day of week | 0 | Sunday in Unix cron |
Good use cases
- Weekly full backup
- Archive rotation
- Maintenance report
- Low-traffic cleanup
Timezone and daylight-saving behavior
The date boundary differs globally. Sunday 00:00 UTC is Sunday 03:00 in Istanbul but still Saturday in parts of the Americas.
The elapsed time between local Sunday midnights can vary around DST, even though the schedule remains tied to the calendar.
The expression does not contain a timezone. The scheduler supplies that context. Use the next-run preview above in the same IANA timezone as production, then confirm the target platform's own timezone rules.
Platform compatibility and converted expressions
The source expression is five-field Unix cron. Use the exact equivalent below rather than adding or removing fields by sight.
| Platform | Status | Expression | What to know |
|---|---|---|---|
| Unix crontab | Ready | 0 0 * * 0 | Use directly in a normal five-field user crontab. |
| Kubernetes CronJob | Ready | 0 0 * * 0 | Use as spec.schedule; set spec.timeZone when local wall-clock behavior matters. |
| GitHub Actions | Ready | 0 0 * * 0 | Use under on.schedule; UTC is the default and an IANA timezone may be specified. |
| Vercel Cron Jobs | Plan / behavior limit | 0 0 * * 0 | Valid numeric weekly schedule at Sunday 00:00 UTC; verify plan limits. |
| AWS EventBridge Scheduler | Convert | cron(0 0 ? * SUN *) | Convert to AWS minute-first cron(...), add the required year, and use ? in one day field. |
| Spring @Scheduled | Convert | 0 0 0 * * SUN | Use Spring’s six fields by prepending seconds and set zone explicitly when needed. |
| systemd timer | Convert | Sun *-*-* 00:00:00 | Use OnCalendar syntax and validate it with systemd-analyze calendar on the target host. |
Edge cases to check before deployment
- Some Unix implementations also accept 7 for Sunday, but 0 is the portable value used here.
- AWS and Quartz-style platforms use a different field layout and weekday rule.
- A weekly failure needs retry or backfill rather than waiting seven days.
Frequently asked questions
What does the cron expression 0 0 * * 0 mean?
0 0 * * 0 means “run every sunday at 00:00.” Once per week at the start of Sunday.
What are the next run times for 0 0 * * 0?
At Sunday 00:01, the next nominal run is seven days later; at Saturday 23:00, it is one hour later. Exact timestamps depend on the scheduler timezone and the current time.
What timezone does 0 0 * * 0 use?
The date boundary differs globally. Sunday 00:00 UTC is Sunday 03:00 in Istanbul but still Saturday in parts of the Americas.
Can I use 0 0 * * 0 on every scheduling platform?
No. It is a five-field Unix expression. Some platforms accept it directly, while AWS EventBridge Scheduler, Spring, and systemd require the converted form shown in the compatibility table.