# 0 9 1-7 * 1

**At 09:00, on the 1st through 7th of the month and also on Monday**

- Expression: `0 9 1-7 * 1`
- Timezone: UTC
- Frequency: approximately 10.3 runs per month (0.34/day)

## Fields

| Field | Value | Meaning |
| --- | --- | --- |
| Minute | `0` | At minute 0. |
| Hour | `9` | At 09:00. |
| Day of month | `1-7` | On the 1st, 2nd, 3rd, 4th, 5th, 6th and 7th. |
| Month | `*` | Every month. |
| Day of week | `1` | On Monday. |

## Next runs (UTC)

- Thu, 2026-09-03, 09:00 — `2026-09-03T09:00:00.000Z`
- Fri, 2026-09-04, 09:00 — `2026-09-04T09:00:00.000Z`
- Sat, 2026-09-05, 09:00 — `2026-09-05T09:00:00.000Z`
- Sun, 2026-09-06, 09:00 — `2026-09-06T09:00:00.000Z`
- Mon, 2026-09-07, 09:00 — `2026-09-07T09:00:00.000Z`

## Warnings

### Day-of-month and day-of-week are combined with OR, not AND (caution)

Both the day-of-month field ("1-7") and the day-of-week field ("1") are restricted. Standard cron runs the job when EITHER matches, so this fires more often than most people expect — not only on days that satisfy both.

**Fix:** To require both conditions, set one field to * and check the other inside your job (for example `[ "$(date +%u)" = "1" ] || exit 0`).

### Interpreted in UTC (info)

A cron expression has no timezone of its own — the scheduler's zone decides when it fires. These times are computed in UTC. The same expression on a host in another zone runs at a different moment.

**Fix:** Set the schedule timezone explicitly (TZ= or CRON_TZ= in crontab, `timeZone` in Kubernetes, or the scheduler's own setting). Vercel Cron Jobs always run in UTC.

---

Canonical URL: https://crontoenglish.com/cron/first-monday-of-the-month
JSON API: `GET https://crontoenglish.com/api/v1/explain?expression=...`
MCP endpoint: `https://crontoenglish.com/api/mcp`
