線上 cron 解析器是一種瀏覽器式的驗證工具,可接受經典的五欄 crontab 運算式、確認每個欄位是否符合其允許範圍、統一空白格式,並以本地與 UTC 兩種時鐘格式列出接下來五次符合的執行時間。五欄 cron 運算式恰好包含分鐘、小時、日期、月份與星期幾,各欄位以單一空格分隔,解析器會在嘗試任何計算前強制執行該結構。線上工具的價值在於即時回饋:貼上排程、查看每個欄位是否選中你預期的值,然後帶著「底層排程器下次何時觸發工作」這項資訊離開。Cron Parser 正是如此運作,並遵循有文件記載的 Cronie 風格規則,包括當兩個日期欄位皆受限制時常被誤解的 OR 行為。它完全在瀏覽器中本機執行,不會執行或儲存運算式,並產生一個統一格式以及每個欄位的簡易英文摘要。

cron parser online
cron parser online

Cron 解析器實際做了什麼

Cron Parser 接受一個恰好由五個以空白分隔欄位組成的字串,依據慣用的數值範圍解析每個欄位,並回報輸入的統一格式以及每個欄位所選內容的簡明摘要。它接著以 UTC 枚舉未來的分鐘,直到找到五次符合的時間,或在五年的安全上限後停止。實務上你會比較的兩種輸出是瀏覽器的本地時鐘,以及對應的 UTC 時間戳記,這讓你能輕鬆地與其他時區的伺服器比對結果。

由於引擎會逐一查看真實的 UTC 瞬間,日光節約時間的切換不會在計算本身中產生跳過或重複的執行;解析器只會交給你一份確定性的清單,並信任你去驗證實際執行該工作的排程器所設定的時區。日曆有效性會委派給 JavaScript Date 物件,因此第 31 日會自然地略過沒有三十一日的月份,而二月的規則會正確處理閏年。解析器不會呼叫任何伺服器、不會執行命令,也不會將運算式保存到任何地方。一切都在你的瀏覽器分頁中發生,而你輸入的內容僅會被視為純文字。

經典五欄格式及其範圍

傳統的 crontab 語法依下列固定順序使用五個欄位:分鐘、小時、日期、月份與星期幾。任何其他形式,包括開頭的秒數欄位或結尾的年份欄位,都會被視為非經典方言,並在任何欄位展開之前予以拒絕。每個欄位皆有明確記載的數值範圍,下表摘要列出解析器所檢查的精確邊界。星期幾的兩個數值 0 與 7 皆會被視為星期日,因此 0 0 * * 7 與 0 0 * * 0 行為相同。

解析器不會默默強制轉換其他數值,因此月份欄位中出現 13、或分鐘欄位中出現 60 等值時,會產生一則聚焦的拒絕訊息,指出有問題的欄位。空白的清單項目、第五個欄位之後額外的命令文字,以及任何不等於恰好五個欄位的數量,皆會被同樣拒絕。這些限制的存在,是因為解析器刻意僅針對可移植的數值核心,而非所有的 cron 方言。

欄位順序有效值備註
分鐘10 到 59僅限整數分鐘,不接受小數
小時20 到 2324 小時制
日期31 到 31沒有該日期的月份將被略過
月份41 到 12不接受 JAN 等名稱
星期幾50 到 70 與 7 皆代表星期日

接受的語法:萬用字元、清單、範圍與步進

在任一欄位中,你可以混合使用四種符號。星號 * 代表欄位中所有允許的值。以逗號分隔的清單會合併多個值,且值與值之間可使用可選的範圍,例如 0,15,30,45 或 8-12,14,18-20。包含端點的數值範圍(例如 10-50)會選取從起始到結束的所有整數。步進運算式會在星號或範圍之後加上 /N,從欄位最小值或範圍起點開始,每隔 N 個值選取一次。

舉例來說,分鐘欄位中的 */15 會展開為 0、15、30、與 45,因為它從欄位最小值 0 開始計算每第十五個值,直到欄位最大值 59 為止。帶有步進的範圍(例如 10-50/20)會求值為 10、30、與 50;步進從範圍起點開始,且永遠不會超過範圍結束。這些皆為相同語法有記載的展開結果,並非逐例的計算器輸出。遞減範圍、零或負數的步進、空白的清單項目,以及超出欄位範圍的值,皆會以聚焦的錯誤訊息拒絕,讓你能立即修正有問題的欄位。

符號意義範例結果
數值單一值55
*所有值*每個允許的值
清單多個值0,15,30,450, 15, 30, 45
範圍包含端點的範圍8-128, 9, 10, 11, 12
步進每 N 個值*/15從 0 開始每 15 個值

如何驗證運算式並讀取接下來五次執行時間

開啟工具、將運算式貼入輸入欄,然後檢視解析器為它所產生的三項輸出:統一格式的字串、逐欄位的摘要,以及即將執行之時間的表格。下列步驟會逐步帶領你完成每次部署排程前皆應遵循的工作流程。

  1. 依序輸入恰好五個欄位,分別為分鐘、小時、日期、月份與星期幾,並以單一空格分隔。多餘的空白會被統一移除;任何非五個欄位的輸入會在任何欄位展開之前被拒絕。
  2. 使用數值、* 萬用字元、逗號清單、包含端點的範圍或正數步進(例如 */15)來建構每個欄位。請避免使用 JAN 或 MON 等名稱,因為經典解析器不接受具名的月份或星期。
  3. 閱讀統一格式的運算式以確認空白與星期幾的處理方式,接著閱讀欄位摘要以確認每個欄位皆選取了你預期的值。摘要是最快能抓出欄位錯放位置的方法。
  4. 同時以瀏覽器的本地時間與 ISO UTC 時間戳記,檢視接下來五次符合的執行時間。本地與 UTC 輸出之間的差異,取決於你的時區偏移以及該瞬間所生效的任何日光節約時間調整。
  5. 針對實際執行該工作的排程器,交叉比對運算式與時區的相關文件,無論該排程器是 Cronie、Vixie cron、systemd timers 或雲端排程器。解析器的輸出僅供驗證,並非部署。

閱讀即將執行之時間表格的一個實用方式是:依你的本地時鐘排序輸出,並驗證第一列是否符合你對運算式的預期,接著快速看一下 UTC 欄位,確認絕對瞬間與伺服器端的參考資料相符。若你的瀏覽器將 2026-03-08T14:00:00Z 顯示為第二列,那麼設定為 UTC 的伺服器理應會在完全相同的瞬間觸發。

日期與星期幾的 OR 語意

傳統的 cron 行為記載於 Cronie crontab 手冊,並重述於 Oracle Linux cron 指南 等廠商文件中,當兩個日期欄位皆受限制時,會以 OR 方式處理。例如,一條選取每月 21 號與星期一的規則,會在每個星期一執行,也會在 21 號執行,無論該日期是星期幾。Cron Parser 實作了該 OR 行為,而非要求兩個欄位皆需符合。當兩個日期欄位之一為萬用字元時,僅由受限制的欄位決定符合條件。

若你需要 AND 語意,請將其中一個欄位限制為單一值,並在另一個欄位使用萬用字元,或將工作拆分為兩個具備重疊限制的排程項目。誤讀這項規則是「cron 工作在錯誤的日子執行」事件最常見的原因,而解析器輸出中的逐欄位摘要正是為了在工作進入正式環境前凸顯該項錯誤而設計。

解析器刻意拒絕的內容

解析器針對 cron 的可移植數值核心,並刻意忽略不同產品之間有差異的擴充功能。它不接受具名的月份或星期(例如 JAN 或 MON)、暱稱(例如 @daily 或 @reboot)、秒數或年份欄位、Quartz 問號、月底語法、雜湊排程、隨機範圍或廠商巨集。將五欄運算式丟入六欄或七欄的排程器中,可能會被靜默地重新解讀或拒絕,因此請務必閱讀目標產品的文件。

日期欄位的語意亦同:雲端排程器可能會將日期與星期幾視為 AND,而非記載中的 OR,這會改變工作執行的時間,即使運算式看起來是有效的。Quartz、Kubernetes CronJobs、AWS EventBridge 與各 CI 服務,皆會在經典格式之上疊加各自的慣例,而解析器的輸出僅驗證經典格式。運算式通過驗證後,下一個決策就是目標服務是否根本支援該形式。

部署前請與你的排程器再次確認

任何解析器的輸出皆為驗證輔助,並非部署保證。在你交付關鍵的備份、計費、通知或維護工作之前,請針對將執行該工作的排程器確認三件事:支援的欄位數量與擴充功能、設定的時區與日光節約原則,以及記載中的日期欄位語意。若這三項皆與解析器顯示的內容一致,那麼即將執行之時間的表格就會是排程器將遵循的同一份排程。若其中任何一項有差異,請調整運算式,或挑選專為該方言打造的工具。

搭配使用的 Cron Expression Generator 能幫助你從易讀的描述建構經典的五欄排程,這在你了解每個欄位的選取內容後,是一個自然的後續步驟。請將解析器視為最終的檢查,而非第一步:先建構運算式、將其貼入解析器、確認欄位摘要、將接下來五次執行時間與你的預期進行比對,接著再進行部署。

延伸閱讀:Cron Parser 替代方案:五個欄位,無需任何函式庫

延伸閱讀:Cron Parser API 替代方案:在瀏覽器中本機驗證

<