Cron expression for weekdays at 9 AM
At 09:00, on weekdays (Monday to Friday).
Five fields for Linux, GitHub Actions and Kubernetes (minute hour day month weekday). Six or seven for Quartz. Nothing you type leaves your device.
What it means and when to use it
The last field is the day of the week, and 1-5 is the range Monday to Friday, with 0 or 7 meaning Sunday and 6 meaning Saturday in ordinary cron. You can also write names, MON-FRI, and the cron manual lists three-letter English names in any case. A working-days schedule suits office reports, reminders for the team and "start of business" jobs.
Watch out for this
Quartz numbers the days differently: there Sunday is 1 and Saturday is 7, so Monday to Friday is 2-6. (the cron class of the Spring framework follows ordinary cron instead, so the same number can mean two different days.) Writing MON-FRI in words is the same in every system. Cron also does not know public holidays: a job set for weekdays runs on Diwali and on Christmas. If it must skip holidays, let the script check a holiday list and exit.
What each field says
| Field | Written | Means |
|---|---|---|
| Minute | 0 | 0 |
| Hour | 9 | 9 |
| Day of month | * | every day of the month |
| Month | * | every month |
| Day of week | 1-5 | Mon, Tue, Wed, Thu, Fri |
An example of the next runs
If it were Friday 13 November 2026 at 10:20 UTC, the next six runs would be these. Times are shown in UTC and in India time (UTC+5:30).
| UTC | India time |
|---|---|
| Mon 16 Nov, 09:00 | Mon 16 Nov, 14:30 |
| Tue 17 Nov, 09:00 | Tue 17 Nov, 14:30 |
| Wed 18 Nov, 09:00 | Wed 18 Nov, 14:30 |
| Thu 19 Nov, 09:00 | Thu 19 Nov, 14:30 |
| Fri 20 Nov, 09:00 | Fri 20 Nov, 14:30 |
| Mon 23 Nov, 09:00 | Mon 23 Nov, 14:30 |
The same schedule in other places
Quartz
Quartz has a seconds field in front, uses ? in one day field, and counts Sunday as 1:
0 0 9 ? * 2-6GitHub Actions
Scheduled workflows run in UTC unless you add a time zone. In the workflow file:
on:
schedule:
- cron: '0 9 * * 1-5'Kubernetes CronJob
In a CronJob manifest the schedule goes in spec.schedule. Without spec.timeZone, it is read in the time zone of the cluster's controller:
spec:
schedule: "0 9 * * 1-5"
timeZone: "Etc/UTC"A crontab line to copy
The command is made up. Replace it with your own and use full paths:
0 9 * * 1-5 /home/me/bin/team-report.sh >> /home/me/team.log 2>&1Questions
How do I write weekends?
0,6 or 6,0 or SAT,SUN. In Quartz, where Sunday is 1, weekends are 1,7.
Is the day of the week field 0-6 or 1-7?
Standard cron uses 0 to 7 with both 0 and 7 as Sunday. GitHub Actions and Kubernetes document 0 to 6. Quartz uses 1 to 7 with Sunday as 1.
This is an independent guide and tool. It is not connected with crontab.guru, Quartz, GitHub, Kubernetes, Spring or the Linux projects named here. Product names belong to their owners.