Advanced (L / W / #)
0,30 8-18 * * 1-5At :00 and :30 from 08:00 to 18:00, Monday to Friday.
This preview is live: the table below shows the actual next run times for 0,30 8-18 * * 1-5 in your time zone, recomputed in your browser. Change the expression, dialect, or zone to experiment, then copy the result.
0,30 8-18 * * 1-5 means0,30 8-18 * * 1-5 uses an explicit minute list (0,30) rather than a step, combined with an extended 8am–6pm hour range and a weekday filter. The minute list and the */30 step produce the same firings here, but the list form makes the two precise minutes obvious to anyone reading the crontab.
Choosing a list over a step is a readability decision: 0,30 says "on the hour and the half hour" at a glance, while */30 requires the reader to do the arithmetic. For a schedule other people will maintain, the explicit form often wins.
Unix cron has five fields. Here is what each one is doing in this expression:
| Field | Value | Meaning |
|---|---|---|
| Minute | 0,30 | the specific values 0,30 of minute |
| Hour | 8-18 | the range 8-18 (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,30 8-18 * * 1-5 | |
| GitHub Actions | 0,30 8-18 * * 1-5 | |
| Kubernetes CronJob | 0,30 8-18 * * 1-5 | |
| Vercel Cron | 0,30 8-18 * * 1-5 | |
| Quartz | 0 0,30 8-18 ? * 1-5 * | |
| Spring | 0 0,30 8-18 ? * 1-5 | |
| AWS EventBridge | 0,30 8-18 ? * 1-5 * |
0,30 8-18 * * 1-50,30 and */30 are equivalent only because 30 divides 60. For minute lists that don't, the step and list forms diverge — always double-check by listing the actual firing minutes when you convert between them.
0,30 8-18 * * 1-5 means: At :00 and :30 from 08:00 to 18:00, Monday to Friday. 0,30 8-18 * * 1-5 uses an explicit minute list (0,30) rather than a step, combined with an extended 8am–6pm hour range and a weekday filter. The minute list and the */30 step produce the same firings here, but the list form makes the two precise minutes obvious to anyone reading the crontab.
Use 0,30 8-18 * * 1-5 in the schedule's cron field. 0,30 and */30 are equivalent only because 30 divides 60. For minute lists that don't, the step and list forms diverge — always double-check by listing the actual firing minutes when you convert between them.
EventBridge uses six fields with a required year and a ? placeholder in one day field: 0,30 8-18 ? * 1-5 *. Wrap it as cron(0,30 8-18 ? * 1-5 *) in the console or CloudFormation.
Quartz is seconds-first with a trailing year, so the equivalent is 0 0,30 8-18 ? * 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.