Hourly
0 9-17 * * 1-5Top of each hour, 09:00–17:00, Monday to Friday.
This preview is live: the table below shows the actual next run times for 0 9-17 * * 1-5 in your time zone, recomputed in your browser. Change the expression, dialect, or zone to experiment, then copy the result.
0 9-17 * * 1-5 means0 9-17 * * 1-5 combines an hour range with a weekday range: fire on the hour from 9am through 5pm, but only Monday through Friday. That is nine runs a day, five days a week — the classic "only while the office is open" schedule.
Ranges keep this readable: 9-17 in the hour field and 1-5 in the day-of-week field. It is the go-to pattern for jobs that should not bother running overnight or at weekends — internal reports, queue processors for human-facing work, or anything whose output nobody reads outside business hours.
Unix cron has five fields. Here is what each one is doing in this expression:
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | minute = 0 |
| Hour | 9-17 | the range 9-17 (inclusive) of hour |
| Day of month | * | every day-of-month |
| Month | * | every month |
| Day of week | 1-5 | the range 1-5 (inclusive) of day-of-week |
The same cadence written for the seven cron dialects you are most likely to meet. Copy the line for the system you target — the field count and day-of-week numbering differ between them.
| Scheduler | Expression | Copy |
|---|---|---|
| Unix / crontab | 0 9-17 * * 1-5 | |
| GitHub Actions | 0 9-17 * * 1-5 | |
| Kubernetes CronJob | 0 9-17 * * 1-5 | |
| Vercel Cron | 0 9-17 * * 1-5 | |
| Quartz | 0 0 9-17 ? * 1-5 * | |
| Spring | 0 0 9-17 ? * 1-5 | |
| AWS EventBridge | 0 9-17 ? * 1-5 * |
Dialect note: Kubernetes defaults to UTC, so "business hours" will drift against your local clock across DST unless you prefix the schedule with CRON_TZ=Europe/London (1.25+).
0 9-17 * * 1-59-17 includes both 09:00 and 17:00 (nine runs). If you meant "up to but not including 5pm", use 9-16. Cron ranges are inclusive on both ends.
0 9-17 * * 1-5 means: Top of each hour, 09:00–17:00, Monday to Friday. 0 9-17 * * 1-5 combines an hour range with a weekday range: fire on the hour from 9am through 5pm, but only Monday through Friday. That is nine runs a day, five days a week — the classic "only while the office is open" schedule.
Use 0 9-17 * * 1-5 in the schedule's cron field. 9-17 includes both 09:00 and 17:00 (nine runs). If you meant "up to but not including 5pm", use 9-16. Cron ranges are inclusive on both ends.
EventBridge uses six fields with a required year and a ? placeholder in one day field: 0 9-17 ? * 1-5 *. Wrap it as cron(0 9-17 ? * 1-5 *) in the console or CloudFormation.
Quartz is seconds-first with a trailing year, so the equivalent is 0 0 9-17 ? * 1-5 *. Remember Quartz numbers Sunday as 1, the opposite of Unix.
Browse the full set of cron pattern pages, or jump to the interactive tools: the cron expression builder for designing a schedule from scratch, the cron cheat sheet for a side-by-side reference, the cron timezone translator for moving a schedule between zones and dialects, and the GitHub Actions cron picker for DST-stable CI schedules.