---
{
  "id": "platform.cron.schedules-and-timezones",
  "topic": "cron",
  "title": "Cron 時間、RRULE 與時區",
  "locale": "zh-TW",
  "version": "2026-07-17",
  "summary": "一次性 Cron 使用 runAt；週期性 Cron 使用 RRULE 與明確界線，並依 IANA timezone 解讀。",
  "content": "`schedule.kind: once` 必須提供 `runAt`，時間至少要在目前 60 秒後，且不得超過未來 365 天。`schedule.kind: recurring` 必須提供 RRULE，並以 `endAt` 或 `maxRuns` 至少一項限制範圍；前兩次 occurrence 的間隔不得少於 900 秒（15 分鐘）。平台契約是 RRULE，不是自行猜測的五欄 cron expression。\n\n每個 schedule 都需要有效的 IANA timezone，例如 `Asia/Taipei`。`startAt` 是週期序列的起點，`endAt` 以時間限制結束，`maxRuns` 以次數限制結束。DST 與 local wall-clock 語意由實際 RRULE engine 負責，不能自行加減固定 offset。\n\n平台停機恢復後會找下一個 future occurrence，不會重播所有錯過的 occurrences。無效 timezone、RRULE、缺少週期界線、已耗盡範圍或短於 15 分鐘，都應依 runtime validation result 解釋，不能宣稱建立成功。\n",
  "aliases": [
    "RRULE 排程",
    "IANA timezone",
    "週期間隔",
    "runAt",
    "日光節約時間",
    "錯過執行時間"
  ],
  "tags": [
    "cron",
    "rrule",
    "timezone"
  ],
  "relatedActions": [
    "arinova.cron.schedule",
    "arinova.cron.update_job"
  ],
  "relatedActionPrefixes": [],
  "sourceReviewedAt": "2026-09-06",
  "url": "https://docs.arinova.ai/zh-tw/kb/cron/schedules-and-timezones/"
}
---

`schedule.kind: once` 必須提供 `runAt`，時間至少要在目前 60 秒後，且不得超過未來 365 天。`schedule.kind: recurring` 必須提供 RRULE，並以 `endAt` 或 `maxRuns` 至少一項限制範圍；前兩次 occurrence 的間隔不得少於 900 秒（15 分鐘）。平台契約是 RRULE，不是自行猜測的五欄 cron expression。

每個 schedule 都需要有效的 IANA timezone，例如 `Asia/Taipei`。`startAt` 是週期序列的起點，`endAt` 以時間限制結束，`maxRuns` 以次數限制結束。DST 與 local wall-clock 語意由實際 RRULE engine 負責，不能自行加減固定 offset。

平台停機恢復後會找下一個 future occurrence，不會重播所有錯過的 occurrences。無效 timezone、RRULE、缺少週期界線、已耗盡範圍或短於 15 分鐘，都應依 runtime validation result 解釋，不能宣稱建立成功。
