PatternCron

First day of every month

Monthly reports and invoice runs: 09:00 on the 1st of each month — and why "last day of the month" is famously harder.

Last updated

Pattern
0 9 1 * *
Open in Crontab Schedule Creator

In plain English

  • Fires at 09:00 on the 1st of every month
  • 12 runs per year

Why it’s written this way

Minute 0, hour 9, day-of-month 1, any month, any weekday: the morning of the 1st, twelve times a year. Day-of-week stays * so the schedule is calendar-driven regardless of which weekday the 1st lands on.

Edge cases to know

  • "Last day of the month" has no portable five-field spelling — months end on 28, 29, 30 or 31. Either run 0 9 28-31 * * with a script guard checking tomorrow is the 1st, or use a scheduler with L syntax (Quartz).
  • Combining a restricted day-of-month with a restricted day-of-week ("first Monday") fires on EITHER match in classic cron — that one needs a script guard too.
  • Month-end billing jobs usually want the 1st looking BACK at last month, which this is; running ON the last day adds the pitfalls above for little gain.

Related in Patterns