How it works
A cron expression has five space-separated fields — minute, hour, day of month, month, and day of week — each describing when a job runs. Each field is parsed independently and explained in plain language, whether it is a wildcard, a single value, a range, a list, or a step interval.
The day-of-month and day-of-week quirk
When both the day-of-month and day-of-week fields are restricted at the
same time, most cron implementations run the job whenever either one
matches — an OR, not an AND. A schedule of 0 0 1 * 1 runs on the first
of every month and every Monday, not only on Mondays that happen to fall
on the first.
What this does not do
This explains a schedule’s meaning; it does not calculate upcoming run times, since that also depends on the timezone and cron implementation actually running the job.