Skip to content

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

  1. Fri, 31 Jul 2026, 00:00
  2. Mon, 31 Aug 2026, 00:00
  3. Wed, 30 Sept 2026, 00:00
  4. Sat, 31 Oct 2026, 00:00
  5. 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

  • second059
  • minute059
  • hour023
  • dom131
  • month112
  • dow17
  • year19702199

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.