cron expression · plain english
Cron last day of month
Fires at 00:00 on the LAST day of every month — handles 28/29/30/31-day months automatically. Standard cron does NOT support this; you need Quartz, AWS EventBridge, or workaround logic.
advanced
POSIX / Jenkins / Quartz / AWS
0 0 L * *
cron last day of month.
Next 5 fire times
Computed live in your local timezone. The cron expression itself is timezone-agnostic — these times reflect your browser clock.
Cross-system syntax variants
Same intent, different schedulers. Use this table when migrating between systems.
| System | Expression | Note |
|---|---|---|
| Standard cron (POSIX) | (NOT SUPPORTED) | POSIX cron has no 'last day' token. Workaround: 0 0 28-31 * * combined with `[ $(date +%d) = $(date -d "+1 day" +%d) ] && exit 1` shell logic |
| Quartz (Java) | 0 0 0 L * ? | L = last day; this is the canonical form |
| Quartz (with offset) | 0 0 0 L-3 * ? | L-3 = 3 days before month end (handles leap years correctly) |
| AWS EventBridge | cron(0 0 L * ? *) | AWS supports L token natively |
| systemd timer | OnCalendar=*-*~01 00:00:00 | tilde-syntax — ~01 = 1 day before next month start |
Common pitfalls
- WARNING: standard POSIX cron does NOT support L. The expression `0 0 L * *` will silently fail or be rejected. Verify your cron implementation.
- Workaround for POSIX: `0 0 28-31 * * /usr/bin/test $(date -d "+1 day" +%d) -eq 1 && /your/script` — fires only when tomorrow is the 1st.
- `L-1` means 'second-to-last day', not 'last day with 1-hour offset'. Read your scheduler's docs carefully — semantics vary.
Use cases
- Month-end financial close
- End-of-month inventory snapshot
- Tax/accounting period boundary jobs
- Subscription quota reset (28/29/30/31 aware)
Translate any cron expression
cronwtf takes any cron string and returns plain-English description plus the next 5 fire times in your timezone. Standard 5-field, Jenkins H, Quartz 6-field — all supported.
Open cronwtf
Related cron schedules
cron every 15 min during business hours · cron: every minute · cron every 3 hours · cron: every weekday (mon-fri) at 9 am