Cron Every Monday
Every Monday is 1 (or MON) in the day-of-week field. This one runs at midnight as Monday begins; set the hour and minute for another time.
minute · hour · day · month · weekday
Build it with controlsWeekly at 00:00 · 1 days
In plain English
At midnight every Monday.
Tap a field to see what it means.
- Next run
- —
- Usually every
- —
- Time zone
- Yours
Convert to another schedulerQuartz, Spring, AWS, GitHub Actions, Kubernetes
| Standard cron | 0 0 * * 1 | current |
|---|---|---|
| Quartz | 0 0 0 ? * MON | |
| Spring | 0 0 0 * * MON | |
| AWS EventBridge | cron(0 0 ? * MON *) | |
| GitHub Actions | 0 0 * * 1 | |
| Kubernetes | 0 0 * * 1 |
About Standard cronTime zone, day numbering, daylight saving
- Runs in the machine’s local time zone; cronie also reads CRON_TZ at the top of the crontab.
- Five fields, then the command. Day of week is 0–7 (0 and 7 are Sunday) or SUN–SAT; months 1–12 or JAN–DEC.
- When both day fields are set, a day that matches either one runs.
- Daylight saving: a job at a fixed time in a skipped hour runs right after the change, and one in a repeated hour runs once. Jobs with * in the minute or hour follow the clock.
Sources: crontab(5), cronie, cron(8), cronie, POSIX crontab.
How this works: Method, 10 sources, Checked against 1 worked example,
How this works
Method
The expression is read field by field with the rules of the scheduler you pick (ranges, lists, steps, names, @ macros, and L, W and # where it has them) into the values each field allows. The next runs come from stepping forward through the calendar in the chosen time zone, day by day and then time by time, using that scheduler’s rule for when both day fields are set and its documented rule for daylight saving (where it has none, a skipped time is skipped and a repeated one runs once). A conversion to another scheduler is parsed back and checked against the original before it is shown.
Sources
How it’s tested
One worked example for this page is checked by automated tests before every release: given the inputs, the tool must show the expected answer.
Changes
- First version: plain English and the next runs for six schedulers, a builder, conversion between them, and 20 pages for common schedules.
Worked example: 0 0 * * 1
Say the clock reads Wednesday 6 January 2027, 8:00 AM UTC. 0 0 * * 1 means “at midnight every Monday”, so the next five runs are Monday 11 January 2027, 12:00 AM, Monday 18 January 2027, 12:00 AM, Monday 25 January 2027, 12:00 AM, Monday 1 February 2027, 12:00 AM and Monday 8 February 2027, 12:00 AM.
In UTC, where no clock change interrupts it, that comes to 1 run a week and 52 in 2027.
Once a week, on Monday
A weekly job fixes a time and one day of the week. Monday is 1 in Linux cron, Kubernetes, GitHub and Spring, so 0 0 * * 1 runs as Monday begins, at midnight, once a week.
To run on Monday morning instead, change the hour: 0 8 * * 1 runs at 8:00 AM. MON works in place of 1 in every dialect this tool covers.
Quartz and AWS number Monday 2, because they count Sunday as 1. Their weekly Monday job is 0 0 0 ? * MON in Quartz and cron(0 0 ? * MON *) in AWS.
Pitfalls
- 0 0 * * 1 in Quartz or AWS (after adding their extra fields) means Sunday, not Monday.
- Midnight Monday in UTC is Sunday evening across the Americas; set the time zone if the job is about people’s working week.
- Putting a date in the day-of-month field too, as in 0 0 1 * 1, runs on the 1st and on every Monday in Linux cron.
- Kubernetes: 0 3 * * 1 means the task is scheduled to run weekly on a Monday at 3 AM. Source: Kubernetes: CronJob.
- AWS EventBridge numbers day of week 1–7, or SUN–SAT. Source: Amazon EventBridge scheduled rules.
“Every Monday” in every scheduler
The same schedule written for each scheduler, converted and checked by this tool. A dash means that scheduler can’t express it in one expression; the note says why.
| Scheduler | Expression | Note |
|---|---|---|
| Standard Unix cron (Vixie cron, cronie) | 0 0 * * 1 | |
| Quartz Scheduler (Java) | 0 0 0 ? * MON | |
| Spring Framework @Scheduled | 0 0 0 * * MON | |
| Amazon EventBridge cron() | cron(0 0 ? * MON *) | |
| GitHub Actions schedule | 0 0 * * 1 | |
| Kubernetes CronJob | 0 0 * * 1 |
Frequently Asked Questions
What is the cron for every Monday?
0 0 * * 1 runs at midnight every Monday; 0 9 * * 1 runs at 9 AM. MON can replace the 1.
What is every Monday in Quartz?
0 0 0 ? * MON (or 2, since Quartz counts Sunday as 1).
How do I run on Monday and Thursday?
List both days: 0 9 * * 1,4 or 0 9 * * MON,THU.