DevToolPal
繁

Cron 運算式

上班時間每小時

週一到週五 09:00 至 17:00 每個整點執行,每個工作日 9 次。

0 9-17 * * 1-5 在 Cron 運算式解析中開啟

逐欄位說明

欄位 值 符合
分鐘 0 0
小時 9-17 9, 10, 11, 12, …, 17
日 * 任意值
月 * 任意值
星期 1-5 星期一星期二星期三星期四星期五

接下來的執行時間

範例:2026年1月1日 之後的前 6 次執行(UTC)。

  1. 2026年1月1日週四 09:00
  2. 2026年1月1日週四 10:00
  3. 2026年1月1日週四 11:00
  4. 2026年1月1日週四 12:00
  5. 2026年1月1日週四 13:00
  6. 2026年1月1日週四 14:00

各平台寫法

crontab
0 9-17 * * 1-5 /path/to/command

用 crontab -e 加入這一行。除非設定了 CRON_TZ 或 TZ,否則依伺服器時區執行。

Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
  name: every-hour-during-business-hours
spec:
  schedule: "0 9-17 * * 1-5"
  timeZone: "Etc/UTC"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: job
              image: busybox:1.36
              command: ["/bin/sh", "-c", "date; echo run"]

設定 spec.timeZone(Kubernetes 1.27+);未設定時依 controller manager 的時區,通常是 UTC。

GitHub Actions
on:
  schedule:
    - cron: '0 9-17 * * 1-5'
  workflow_dispatch:

GitHub Actions 一律使用 UTC,最短間隔為 5 分鐘,負載高時排程可能延後啟動。

Quartz
0 0 9-17 ? * MON-FRI

Quartz 把秒放在最前面,且日與星期其中之一必須寫 ?。星期以 1–7 表示(從週日開始),使用英文縮寫較不易出錯。

Spring
@Scheduled(cron = "0 0 9-17 * * MON-FRI")

Spring 的 @Scheduled(cron = …) 使用六個欄位:秒,再加上一般的五個欄位。

常見問題

› 9-17 包括 17:00 那一次嗎?

包括。範圍含頭含尾,最後一次在 17:00。想在 16:00 結束就用 9-16。

› 0 9-17 * * 1-5 依哪個時區執行?

Cron 使用執行它的機器或服務的時區。在 Linux 上是系統時區,除非設定了 CRON_TZ 或 TZ;Kubernetes CronJob 可設定 spec.timeZone;GitHub Actions 一律使用 UTC。

› 部署前要怎麼檢查這個排程?

在本站的 Cron 運算式解析中開啟 0 9-17 * * 1-5。它會解釋每個欄位,並依本地時間或 UTC 列出接下來的執行時間,全部在瀏覽器中完成。