Curated cron expression
First Day of Every Quarter Cron Expression: 0 0 1 1,4,7,10 *
Decode the quarterly cron expression 0 0 1 1,4,7,10 *, with field-by-field meaning, next-run dates, timezone guidance, fiscal-calendar caveats, and platform conversions.
Meaning at a glance
0 0 1 1,4,7,10 *
Run at midnight on January 1, April 1, July 1, and October 1
Four times per calendar year at the start of each standard quarter.
Next-run example: After April 1 at 00:01, the next nominal run is July 1 at 00:00.
How 0 0 1 1,4,7,10 * works
The month list 1,4,7,10 names the starts of standard calendar quarters. Day 1 and midnight restrict each run to the first instant of those four months.
An explicit month list is easier to review across cron implementations than a step expression whose starting point may be misunderstood. Fiscal quarters that do not begin in January need a different list.
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute zero |
| Hour | 0 | At midnight |
| Day of month | 1 | First calendar day |
| Month | 1,4,7,10 | January, April, July, and October |
| Day of week | * | Regardless of weekday |
Good use cases
- Quarterly reporting
- Capacity review snapshot
- Quarterly access certification
- Fiscal data archive
Timezone and daylight-saving behavior
Use the legal or business timezone that defines the quarter boundary for the organization.
Quarter boundaries are calendar events. The elapsed time between them varies by month length and timezone offset changes.
The expression does not contain a timezone. The scheduler supplies that context. Use the next-run preview above in the same IANA timezone as production, then confirm the target platform's own timezone rules.
Platform compatibility and converted expressions
The source expression is five-field Unix cron. Use the exact equivalent below rather than adding or removing fields by sight.
| Platform | Status | Expression | What to know |
|---|---|---|---|
| Unix crontab | Ready | 0 0 1 1,4,7,10 * | Use directly in a normal five-field user crontab. |
| Kubernetes CronJob | Ready | 0 0 1 1,4,7,10 * | Use as spec.schedule; set spec.timeZone when local wall-clock behavior matters. |
| GitHub Actions | Ready | 0 0 1 1,4,7,10 * | Use under on.schedule; UTC is the default and an IANA timezone may be specified. |
| Vercel Cron Jobs | Ready | 0 0 1 1,4,7,10 * | Valid low-frequency schedule on all current plans, evaluated in UTC. |
| AWS EventBridge Scheduler | Convert | cron(0 0 1 1,4,7,10 ? *) | Convert to AWS minute-first cron(...), add the required year, and use ? in one day field. |
| Spring @Scheduled | Convert | 0 0 0 1 JAN,APR,JUL,OCT * | Use Spring’s six fields by prepending seconds and set zone explicitly when needed. |
| systemd timer | Convert | quarterly | Use OnCalendar syntax and validate it with systemd-analyze calendar on the target host. |
Edge cases to check before deployment
- Not every organization uses January-based fiscal quarters.
- Quarter-end processing often belongs after the prior period closes, not exactly at 00:00.
- Persist a year-quarter key so retries and backfills are safe.
Frequently asked questions
What does the cron expression 0 0 1 1,4,7,10 * mean?
0 0 1 1,4,7,10 * means “run at midnight on january 1, april 1, july 1, and october 1.” Four times per calendar year at the start of each standard quarter.
What are the next run times for 0 0 1 1,4,7,10 *?
After April 1 at 00:01, the next nominal run is July 1 at 00:00. Exact timestamps depend on the scheduler timezone and the current time.
What timezone does 0 0 1 1,4,7,10 * use?
Use the legal or business timezone that defines the quarter boundary for the organization.
Can I use 0 0 1 1,4,7,10 * on every scheduling platform?
No. It is a five-field Unix expression. Some platforms accept it directly, while AWS EventBridge Scheduler, Spring, and systemd require the converted form shown in the compatibility table.