ShareYourGroupShareYourGroupCron Helper

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

FieldWrittenMeans
Minute00
Hour99
Day of month*every day of the month
Month*every month
Day of week1-5Mon, 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).

UTCIndia time
Mon 16 Nov, 09:00Mon 16 Nov, 14:30
Tue 17 Nov, 09:00Tue 17 Nov, 14:30
Wed 18 Nov, 09:00Wed 18 Nov, 14:30
Thu 19 Nov, 09:00Thu 19 Nov, 14:30
Fri 20 Nov, 09:00Fri 20 Nov, 14:30
Mon 23 Nov, 09:00Mon 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-6

GitHub 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>&1

Questions

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.