Cron expression for every weekday

0 9 * * 1-5

At 09:00, on weekdays (Monday through Friday).

1-5 in the day-of-week field means Monday through Friday (0 is Sunday). This example runs at 09:00; change the first two fields for another time.

Try it and tweak it

Change any field below and the preview updates. Set the time zone to match your server.

✓ Valid cron

At 09:00, on weekdays (Monday through Friday).

Next 10 runs

Calculating in your browser…

Times are computed in your browser for the selected zone and are informational. The server that runs the job uses its own zone (often UTC) and cron flavour, so verify there.

Same schedule in other dialects

Unix crontab0 9 * * 1-5
Quartz0 0 9 ? * MON-FRI
Spring @Scheduled0 0 9 ? * MON-FRI
AWS EventBridgecron(0 9 ? * MON-FRI *)

Variations

0 9 * * MON-FRISame schedule with day names
*/30 9-17 * * 1-5Every 30 minutes during weekday office hours

In other schedulers

crontab line0 9 * * 1-5 /path/to/command
Quartz0 0 9 ? * MON-FRI
Spring@Scheduled(cron = "0 0 9 ? * MON-FRI")
AWS EventBridgecron(0 9 ? * MON-FRI *)
GitHub Actions- cron: '0 9 * * 1-5' (UTC)
Kubernetesschedule: "0 9 * * 1-5"

Questions

What is the cron expression for every weekday (mon–fri)?
0 9 * * 1-5. At 09:00, on weekdays (Monday through Friday).
How do I write it in Quartz or Spring?
Add a seconds field and use "?" for the unused day field: 0 0 9 ? * MON-FRI. In Spring: @Scheduled(cron = "0 0 9 ? * MON-FRI").
What is the AWS EventBridge version?
cron(0 9 ? * MON-FRI *). AWS uses six fields with a year at the end and needs "?" in one of the day fields.
Which time zone will it use?
The time zone of the machine or service running cron. GitHub Actions and Vercel use UTC; Kubernetes uses spec.timeZone if set. The preview above lets you pick a zone.