A cron expression is five fields, separated by spaces:
| Field | Values | Examples |
| minute | 0–59 | 15, */10, 0,30, 10-40/5 |
| hour | 0–23 | 9, 8-18, */2 |
| day of month | 1–31 | 1, 1,15, L (last), 15W (nearest weekday) |
| month | 1–12 or JAN–DEC | 2, FEB, 1,4,7,10 |
| day of week | 0–7 (0 and 7 = Sunday) or SUN–SAT | 1, MON-FRI, 5L (last Friday), 5#2 (2nd Friday) |
* means “every”. */15 = every 15th; 8-18 = 8 through 18 inclusive; commas combine.
- The classic gotcha: when both day-of-month and day-of-week are restricted (
0 0 1 * 1), cron fires when either matches — not only when both do.
- Shorthands:
@yearly @monthly @weekly @daily @hourly — and Quartz-style six-field expressions with seconds (30 0/5 14 * * ?) work too.
- Spring forward:
30 2 * * * fires at 03:00 on the jump day, because 02:30 never happens. Fall back: 01:30 fires once, at the first 01:30.