Cron Expression Builder
Write it, read it back in plain English, and see when it actually fires.
At 00:00 on the last day of the month.
Next runs — UTC
- Fri, 31 Jul 2026, 00:00
- Mon, 31 Aug 2026, 00:00
- Wed, 30 Sept 2026, 00:00
- Sat, 31 Oct 2026, 00:00
- Mon, 30 Nov 2026, 00:00
Six or seven fields, starting with seconds. Day-of-week counts 1 = Sunday.
Cron uses the server’s timezone, which is often not yours. Check before you trust a time.
Fields
- second0–59
- minute0–59
- hour0–23
- dom1–31
- month1–12
- dow1–7
- year1970–2199
Cron on the last day of the month
0 0 0 L * ?
Quartz and AWS EventBridge have an L token meaning the last day of the month, so 0 0 0 L * ? runs at midnight on the 31st, the 30th, the 28th or the 29th as appropriate. Plain crontab has no such token, which is why month-end jobs on Unix are usually written as a daily job that exits early unless today is the last day.
Frequently asked questions
- How do I run a cron job on the last day of the month?
- In Quartz or AWS EventBridge, use L in the day-of-month field. In crontab there is no L, so the usual approach is 0 0 28-31 * * with a guard in the script: run the real work only if tomorrow's date is the 1st.
- Why doesn't 0 0 31 * * work?
- Because it only fires in months that have a 31st. February, April, June, September and November are skipped entirely, so the job silently misses seven months a year.
- Does L handle February and leap years?
- Yes. L resolves to whatever the last day of that particular month is, including the 29th in a leap year.