At 09:00, Monday through Friday

0 9 * * 1-5

Fields

Minute00
Hour99
Day of month*any
Month*any
Day of week1-51, 2, 3, 4, 5

Where to use it

crontab0 9 * * 1-5 /path/to/script.sh
GitHub Actions- cron: "0 9 * * 1-5" (on.schedule)
Kubernetes CronJobschedule: "0 9 * * 1-5"

crontab runs in the server’s time zone; GitHub Actions always uses UTC.

Good to know

0 9 * * 1-5 runs at 09:00 Monday to Friday; most crons also accept MON-FRI. The time zone is the big trap: a 9 am report on a UTC server arrives at 10:00 or 11:00 in Central Europe depending on daylight saving, and GitHub Actions always uses UTC. Pin local time with CRON_TZ=Europe/Warsaw in cronie, or spec.timeZone in a Kubernetes CronJob.

Cron knows nothing about public holidays, so check a holiday list inside the script and exit early. Don’t combine day-of-month with day-of-week to mean “first weekday of the month”: when both fields are restricted, cron runs if either matches, so 0 9 1 * 1-5 fires on the 1st and on every weekday. For 9:00 and 17:00 on weekdays, write 0 9,17 * * 1-5.

Open Cron Expression Builder and Explainer