cronuru
Pattern

Daily at Noon

0 12 * * *
0 0 12 * * ?
0 12 * * *
0 12 * * ? *
0 0 12 * * *
0 12 * * *

Runs once a day at 12:00 (noon). One invocation per day.

Use in your stack

# Daily at noon (server timezone)
0 12 * * * /usr/local/bin/noon-digest.sh

# Pin to Eastern time
CRON_TZ=America/New_York
0 12 * * * /usr/local/bin/noon-digest.sh
{ "cron": "0 0 12 * * ?", "timezone": "UTC" }
apiVersion: batch/v1
kind: CronJob
metadata:
  name: noon-digest
spec:
  schedule: "0 12 * * *"
  timeZone: "America/New_York"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: digest
            image: my-image:latest
          restartPolicy: OnFailure
cron(0 12 * * ? *)
@Scheduled(cron = "0 0 12 * * *", zone = "America/New_York")
public void noonJob() { /* ... */ }
on:
  schedule:
    - cron: '0 12 * * *'

Next runs

Pick a timezone to see when this expression fires next.

Next 10 runs
  1. 012026-07-04T12:00:00.000Z
  2. 022026-07-05T12:00:00.000Z
  3. 032026-07-06T12:00:00.000Z
  4. 042026-07-07T12:00:00.000Z
  5. 052026-07-08T12:00:00.000Z
  6. 062026-07-09T12:00:00.000Z
  7. 072026-07-10T12:00:00.000Z
  8. 082026-07-11T12:00:00.000Z
  9. 092026-07-12T12:00:00.000Z
  10. 102026-07-13T12:00:00.000Z

Variations

0 9 * * *

Daily at 9 AM

0 0 * * *

Daily at midnight

0 0,12 * * *

Twice daily — midnight and noon

Common use cases

  • Sending midday digest emails or chat summaries.
  • Half-day operational reports.
  • Mid-shift handoff jobs in two-shift operations.
  • Periodic cleanup that benefits from running during lower-load midday hours.

Gotchas

  • 12:00 UTC is 5 AM Pacific, 8 AM Eastern, 1 PM London, 9 PM Tokyo. "Noon" only means noon in the timezone you intend.
  • Pin the timezone explicitly for K8s (`spec.timeZone`), crontab (`CRON_TZ`), or Spring (`zone` parameter). AWS EventBridge and GitHub Actions are UTC-only.
  • Don't confuse 12:00 (noon) with 00:00 (midnight). Cron uses 24-hour format — `0 0 * * *` is midnight; `0 12 * * *` is noon.

0 12 * * * is the midday batch — useful for digests that span the morning, status reports landing right before lunch, or jobs that need a daytime sister to a nightly cron. Like all timed daily jobs, the timezone matters more than the hour.

Frequently asked questions

What does `0 12 * * *` mean?
Minute `0` and hour `12` mean "at 12:00" (noon). The three asterisks for day-of-month, month, and day-of-week mean "every day." One invocation per day at noon.
Is `0 12 * * *` noon or midnight?
Noon. Cron uses 24-hour time — hour `12` is 12:00 noon, hour `0` (or hour `24` which isn't allowed; use `0`) is 00:00 midnight. The most common bug here is writing `0 12 * * *` when you meant midnight; for midnight use `0 0 * * *`.
How do I run at noon in my local timezone?
Crontab: add `CRON_TZ=America/Los_Angeles` at the top of the file. Kubernetes CronJob: set `spec.timeZone: "America/Los_Angeles"` (requires K8s 1.27+). Spring: `@Scheduled(cron = "0 0 12 * * *", zone = "America/Los_Angeles")`. AWS EventBridge and GitHub Actions are UTC-only and require manual offset.
Can I use `0 N * * *` for any hour N?
Yes — any value 0–23 in the hour field. `0 8 * * *` is 8 AM, `0 17 * * *` is 5 PM, `0 23 * * *` is 11 PM. Cron rejects values outside 0–23 (no `24`).

Browse all cron patterns

Every schedule Cronuru documents, with its expression and code snippets for six dialects.