Cron at End of Each Quarter
Schedule a cron job at the end of each fiscal quarter using 0 23 28-31 3,6,9,12 *. Field breakdown for quarterly close scheduling with date handling.
Cron Expression
0 23 28-31 3,6,9,12 *
Field Breakdown
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At 0 |
| Hour | 23 | At 23 |
| Day of Month | 28-31 | From 28 to 31 |
| Month | 3,6,9,12 | At March, June, September, December |
| Day of Week | * | Every day of the week (Sun–Sat) |
Detailed Explanation
The cron expression 0 23 28-31 3,6,9,12 * schedules a task to run at 11 PM on the last few days of each quarter-ending month (March, June, September, December).
Field-by-field breakdown:
0(Minute): At minute 0. The task fires at the top of the hour.23(Hour): At hour 23 (11 PM). The task runs near the end of the day to capture full-day data.28-31(Day of Month): Days 28 through 31. This range covers the possible last days of the quarter-ending months.3,6,9,12(Month): March, June, September, and December. These are the last months of Q1, Q2, Q3, and Q4 respectively.*(Day of Week): Every day of the week. No restriction on the day.
This expression will fire on days 28-31 of each quarter-ending month, so you should add a shell guard to ensure it only runs on the actual last day: [ "$(date +\%d -d tomorrow)" = "01" ] && your_command. Without this guard, the task will run multiple times (e.g., on March 28, 29, 30, and 31). The quarter-ending months have different lengths: March has 31 days, June has 30, September has 30, and December has 31. The 11 PM timing ensures nearly complete data for the final day is captured. This expression is supported by standard cron on Linux/macOS, as well as cloud services like AWS CloudWatch, Google Cloud Scheduler, and GitHub Actions.
Use Case
Essential for triggering end-of-quarter financial close processes, generating quarterly earnings reports, and initiating quarterly tax filing preparation workflows.
Try It — Interactive Builder
at min 0, at hour 23, on day 28-31, in month 3,6,9,12
Next 10 Executions
Ctrl+Shift+C to copy expression