0 0 * * * ? - every hour, on the hour (Quartz)
The Quartz cron expression 0 0 * * * ? means every hour on the hour, seconds first; this page explains each field and lists the next runs in your browser.
0 * * * *
0 0 * * * ?
cron(0 * * * ? *)
Read by our parser as: Every hour, on the hour. Open in the cron checker
Next 10 runs
Calculating in your browser...
- 1
- 2
- 3
At a glance
- Accepts
- Nothing to enter - the schedule is preset on the page
- Outputs
- The expression in Unix, Quartz/Spring and AWS form, plus its next 10 run times
- Where it runs
- Entirely in your browser, on your device
- What leaves your device
- Nothing - what you type stays in this tab
- Limits
- Run times use your browser's timezone or UTC; real schedulers can start a run late
- Account
- Not required - there is no sign-up
- Price
- Free, with no watermark and no usage cap
- Made by
- Visrut
What it means
0 0 * * * ? runs every hour, on the hour (1:00:00, 2:00:00, 3:00:00 ...). It's Quartz syntax, which Spring also accepts: second 0, minute 0, every hour, every day of the month, every month, and ? (no specific value) for the day of week. 0 0 * * * ? * is the same schedule with Quartz's optional year field set to *, every year.
When this is the right schedule
Use it when you're configuring a Java scheduler (Quartz, Spring @Scheduled, or another tool whose docs say it takes Quartz-style cron) and want an hourly job.
When to pick something else
Look elsewhere when you paste it into a crontab, GitHub Actions or Kubernetes. Those use 5 fields without seconds, so the hourly version there is 0 * * * *.
Things to watch
Field by field
0 second, 0 minute, * hour (all 24), * day of month, * month, ? day of week, and optionally * for the year. The two leading zeros are what pin it to the top of the hour; it isn't midnight, because the hour field is *.
Why the question mark
Quartz requires ? in either day of month or day of week, since its docs say specifying both isn't fully supported. Here day of month is * (every day), so day of week gets ?. Spring accepts the ? but would also take 0 0 * * * *, and AWS needs it too.
Easily confused neighbours
0 0 0 * * ? is daily at midnight (hour 0). 0 * * * * ? is every minute. * 0 * * * ? is every second during minute 0 of each hour, 60 runs an hour.
Frequently asked questions
What is the frequency of 0 0 * * * ?
Once an hour, on the hour (minute 0, second 0), 24 times a day.
What does 0 0 * * * ? * mean?
The same: every hour on the hour. The seventh field is Quartz's optional year, and * means every year.
Is 0 0 * * * ? midnight?
No. Midnight in Quartz is 0 0 0 * * ? (three zeros: second, minute, hour).