Developer Toolbox

Cron: weekdays at 9 am

The day-of-week range 1-5 covers Monday to Friday, and the job runs once on each of those days at 09:00. Most crons also accept names: 0 9 * * MON-FRI.

Open in Cron Parser The expression is filled in: change it and watch the next runs.

Expression

0 9 * * 1-5
Meaning

At 09:00, Monday through Friday

Next 5 runs

Your time zone

The same schedule on other platforms

PlatformWritten asNote
Linux crontab0 9 * * 1-5Five fields, in the server's local time zone. A % in the command has to be escaped as \%.
GitHub Actions- cron: '0 9 * * 1-5'UTC by default: 09:00 UTC is 10:00 or 11:00 in Central Europe. Add timezone: "Europe/Warsaw" next to cron to run at 09:00 local time.
Kubernetes CronJobschedule: "0 9 * * 1-5"Five fields, in the controller's time zone unless spec.timeZone is set (Kubernetes 1.27 and later). concurrencyPolicy decides what happens when runs overlap.
systemd timerOnCalendar=Mon..Fri 09:00Its own calendar syntax, in a .timer unit, local time. hourly, daily and monthly match cron, but weekly means Monday. Persistent=true catches up on runs missed while the machine was off.
AWS EventBridgecron(0 9 ? * MON-FRI *)Days are numbered from Sunday (1) here, so names are safer: 2-6 would also mean Monday to Friday.
Quartz / Spring0 0 9 ? * MON-FRIQuartz numbers days from Sunday (1), Spring from Monday like cron; MON-FRI means the same in both.

Common mistakes

  • Day numbers differ

    In crontab, 1 is Monday and both 0 and 7 are Sunday. In EventBridge and Quartz, 1 is Sunday and 7 is Saturday. Names (MON-FRI) mean the same everywhere.

  • Adding a day of the month makes it OR

    0 9 1 * 1-5 runs on the 1st of every month and on every weekday, not only on weekdays that fall on the 1st. When both day fields are set, cron runs if either matches.

  • Holidays

    Cron has no calendar of public holidays. Check the date inside the job, or skip it with a list of dates the job reads.