How this expression works
The expression 0 9 * * * is written in Standard crontab syntax. Read it field by field from left to right: each field narrows down when the job may run, and the scheduler starts the job whenever the current time matches all of them. In plain language it means: At 09:00 AM.
Adapting it to your scheduler
Crontab, Kubernetes and GitHub Actions use the five-field form. Quartz and Spring expect a seconds field in front, and Quartz and AWS also need “?” in one of the two day fields — the table above already takes care of those differences. Remember that GitHub Actions and AWS EventBridge rules run in UTC, while crontab uses the server’s time zone, so the same expression can fire at different local times depending on where it runs.
Check before you deploy
Paste your final expression into the explainer above and choose the time zone of the machine that will run it. The list of next runs shows exactly when the job will start, including around daylight-saving changes, so you can catch an off-by-one-hour mistake before it reaches production.
Frequently asked questions
- What is the cron expression for every day at 9 AM?
- In standard crontab it is 0 9 * * *. In Quartz it is 0 0 9 * * ?, and in AWS EventBridge it is cron(0 9 * * ? *).
- Which time zone will it run in?
- Crontab uses the server’s local time zone, Kubernetes the controller’s zone or spec.timeZone, and GitHub Actions and AWS EventBridge rules use UTC.
- How can I test the schedule?
- Paste it into the explainer on this page: it shows the next 10 run times in any time zone, next to your local time.
- Can I change it slightly?
- Yes. Edit the expression in the tool or use the visual builder; the description and run times update as you type.