Cron Last Day of Month

0 0 28-31 * *

On day 28th, 29th, 30th, 31st of every month at 12:00 AM

Next 10 Executions

Times shown in UTC

  • Thu, May 28, 202600:00
  • Fri, May 29, 202600:00
  • Sat, May 30, 202600:00
  • Sun, May 31, 202600:00
  • Sun, Jun 28, 202600:00
  • Mon, Jun 29, 202600:00
  • Tue, Jun 30, 202600:00
  • Tue, Jul 28, 202600:00
  • Wed, Jul 29, 202600:00
  • Thu, Jul 30, 202600:00

Field Breakdown

0
Minute
0
0
Hour
0
28-31
Day of Month
28-31
*
Month
Every month
*
Day of Week
Every day of week

About This Schedule

Standard cron doesn't have a built-in "last day of month" keyword. The expression 0 0 28-31 * * runs on days 28, 29, 30, and 31 — but that runs multiple times at month-end for months with 30 or 31 days.

For true last-day-only behavior, you need to combine cron with a date check in your script:

0 0 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /path/to/your/script

Some cron implementations support the L modifier: 0 0 L * * means "last day of the month." This is available in Quartz, Spring, and some extended cron libraries, but not in standard Unix cron.

Frequently Asked Questions