The five fields, in order
A crontab line is five space-separated fields: minute hour day-of-month month day-of-week. Minutes run 0–59, hours 0–23, day of month 1–31, month 1–12, and day of week 0–6 where 0 is Sunday. Most implementations also accept 7 for Sunday, and three-letter names like MON or JAN.
Each field accepts four things: a single value (5), a list (1,15,30), a range (1-5) and a step (*/15, or 0-30/5 for every five minutes in the first half hour). An asterisk means "every value".
The day-of-month and day-of-week trap
This is the single most misunderstood part of cron. When both the day-of-month and the day-of-week fields are restricted, cron combines them with OR, not AND. So 0 0 13 * 5 does not mean "Friday the 13th" — it means "midnight on the 13th of every month, and also every Friday".
Getting a true "Friday the 13th" schedule requires a day-of-month check inside the job itself. When exactly one of the two fields is restricted, the behaviour is the intuitive one, which is why the bug hides for so long.
Timezones, and why the run times here may not match your server
The next run times shown on this page are computed in your browser's timezone. Your server almost certainly runs cron in UTC, or in whatever the system timezone happens to be. A daily job at 0 2 * * * fires at 02:00 server time, which may be a completely different hour where you are.
Daylight saving time makes it worse. When the clock jumps forward, jobs scheduled inside the skipped hour may not run at all that day; when it falls back, they can run twice. If a job must not be skipped or duplicated, schedule it in UTC or make it idempotent.
Standard cron, Quartz and the seconds field
Classic Unix crontab has five fields and a one-minute resolution — you cannot schedule anything more frequent than once per minute. Quartz, Spring's @Scheduled, and several job libraries add a seconds field at the front, making six.
If you paste a six-field expression here, the tool tells you rather than guessing, because the same string means different schedules in the two dialects. Some Quartz expressions also use ?, L and #, which standard crontab does not understand.