Năm trường, đọc từ trái sang phải
Một biểu thức cron gồm 5 trường cách nhau bằng khoảng trắng — phút, giờ, ngày-trong-tháng, tháng, thứ-trong-tuần — mỗi trường nêu những giá trị nào của đơn vị đó khiến lịch chạy khớp ở lượt này. Lấy */15 9-17 * * MON-FRI làm ví dụ: trường phút */15 giãn ra 0, 15, 30, 45; trường giờ 9-17 giãn ra mọi giờ từ 9 đến 17; ngày-trong-tháng và tháng đều để *, khớp mọi giá trị; và MON-FRI thu hẹp thứ-trong-tuần về Thứ Hai tới Thứ Sáu. Gộp lại: cứ 15 phút một lần, từ 9 giờ sáng tới 5 giờ chiều, từ Thứ Hai tới Thứ Sáu — một job giờ hành chính điển hình.
| Trường | Vị trí | Phạm vi | * nghĩa là |
|---|---|---|---|
| Phút | 1 | 0–59 | mọi phút |
| Giờ | 2 | 0–23 | mọi giờ |
| Ngày trong tháng | 3 | 1–31 | mọi ngày trong tháng |
| Tháng | 4 | 1–12 hoặc JAN–DEC | mọi tháng |
| Thứ trong tuần | 5 | 0–7 (0 và 7 đều là Chủ Nhật) hoặc SUN–SAT | mọi thứ trong tuần |
Bước nhảy đếm từ điểm bắt đầu của khoảng, không phải từ 0
9-17/4 đọc là "cứ 4 giờ một lần, bắt đầu từ 9, tới hết 17" — tức 9, 13, 17. */4 một mình lại khác: không có điểm bắt đầu rõ ràng, nó nhảy từ số 0 của trường, nên trên trường giờ đó là 0, 4, 8, 12, 16, 20. Hai cách viết trông gần giống nhau nhưng cho ra hai kết quả hoàn toàn khác nhau.
* một mình nhảy từ số 0 của trường, còn một khoảng thì nhảy từ điểm bắt đầu của chính khoảng đó. 9-17/4 và */4 trên cùng một trường rơi vào những giờ hoàn toàn khác nhau.Quy tắc hay bị hiểu ngược: hai trường ngày dùng OR, không dùng AND
Cron dùng AND giữa mọi trường với nhau — trừ ngày-trong-tháng và thứ-trong-tuần, hai trường này dùng OR mỗi khi không trường ngày nào là *. 0 0 13 * FRI chạy lúc nửa đêm vào ngày 13 của tháng hoặc vào bất kỳ Thứ Sáu nào — không phải chỉ Thứ Sáu ngày 13. Chạy thử từ ngày 1/1/2026: lịch chạy Thứ Sáu 2/1, Thứ Sáu 9/1, rồi tới ngày 13 (rơi vào Thứ Ba, khớp thuần túy nhờ ngày-trong-tháng), rồi Thứ Sáu 16/1. Chỉ khi một trong hai trường là * thì quy tắc mới thu về giống AND: 0 0 * * FRI để ngày-trong-tháng là *, nên lịch chạy đơn giản là mọi Thứ Sáu.
Múi giờ: cái gì đổi, và hai ngày trong năm gây rắc rối
Biểu thức cron mô tả một thời điểm theo đồng hồ treo tường, không phải một thời điểm cố định — 30 9 * * * nghĩa là "09:30, theo múi giờ bạn chỉ định", và chọn múi giờ khác chỉ đổi thời điểm UTC tương ứng, còn giờ đọc trên đồng hồ địa phương giữ nguyên. Đặt biểu thức đó chạy từ 1/1/2026 tại Asia/Ho_Chi_Minh, lần chạy đầu rơi vào 02:30 UTC; đặt đúng biểu thức đó tại America/New_York, lần chạy đầu lại rơi vào 14:30 UTC — cách nhau 12 tiếng, dù cả hai đều đọc là 09:30 trên đồng hồ.
Hai ngày trong năm khiến việc quy đổi này thật sự rắc rối, và chỉ ở múi giờ có áp dụng giờ mùa hè (DST). Ngày 8/3/2026, đồng hồ tại America/New_York nhảy thẳng từ 01:59 sang 03:00, nên 02:30 không tồn tại hôm đó — job hằng ngày đặt 30 2 * * * đơn giản là không chạy vào ngày 8, rồi chạy lại bình thường vào ngày 9. Ngày 1/11/2026, cùng múi giờ đó lùi lại một tiếng, nên 01:30 xảy ra hai lần; job 30 1 * * * vẫn chỉ liệt kê một lần, quy về lần sớm hơn trong hai lần đó.