The five fields, and what each one accepts
A standard cron expression has five fields separated by spaces: minute (0 to 59), hour (0 to 23), day of the month (1 to 31), month (1 to 12, or JAN to DEC) and day of the week. Each field takes a single value, a list such as 1,15, a range such as 9-17, an asterisk for every value, or a step such as */15. A step counts through the range it follows, so 0-30/10 means minutes 0, 10, 20 and 30.
Steps restart at the start of each larger unit rather than counting continuously. */7 in the minute field runs at 0, 7, 14 and so on to 56, then at 0 again: the last gap of each hour is 4 minutes, not 7. */5 in the hour field runs at 0, 5, 10, 15 and 20, leaving 4 hours between 20:00 and midnight. If you need an exact interval that does not divide the hour or the day, cron is the wrong tool and a fixed-rate timer is better.
Days that do not exist are skipped, never moved. 0 0 31 * * runs in only seven months a year, and 0 0 30 2 * never runs at all. The generator lists the next runs, so a schedule that runs rarely or never shows up immediately instead of in production.
Every 15 minutes
*/15 * * * *At minutes 0, 15, 30 and 45 of every hour.
Weekdays at 09:30
30 9 * * 1-5Monday to Friday, once a day.
Business hours
*/15 9-17 * * 1-5Every 15 minutes from 09:00 to 17:45 on weekdays.
First of the month
0 0 1 * *Midnight at the start of every month.