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
0Minute
0
0Hour
0
28-31Day 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/scriptSome 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.