Cron 表達式解析器

把 Cron 排程表達式拆解成每個欄位的含義,並預覽接下來的執行時間,在瀏覽器本地完成。

Cron 表達式

接下來的執行時間

(本地時間)

輸入 Cron 表達式即可解析。

你的 Cron 表達式會在瀏覽器本地解析,不會傳送到 BroBroGo。

常見問題

這個工具支援哪些 Cron 語法?

標準 5 位欄位——分鐘、小時、日期、月份、星期——支援範圍(1-5)、步進(*/15)、清單(1,15)、英文月份/星期縮寫(JAN、MON),以及 @yearly/@monthly/@weekly/@daily/@hourly 這些簡寫。有個容易忽略的規則:當「日期」和「星期」兩個欄位都被限定(不是 *)時,只要符合其中一個就算符合,不需要同時符合。

「接下來的執行時間」是哪個時區?

是你瀏覽器所在系統的本地時區。標準 Cron 表達式本身不帶時區資訊,實際用哪個時區由執行它的排程器決定,所以這裡顯示的是你本地時鐘下的預覽,不一定和伺服器一致。

為什麼顯示「這個排程永遠不會執行」?

通常是日期欄位選了某些月份根本沒有的天數——例如把日期設成 31,月份又包含 4、6、9、11 月。把日期改成所有選中月份都存在的天數,或拆成幾條個別的表達式即可。

Cron 表達式解析與排程原理

在系統運維與後端開發中,Cron 表達式是設定定時任務(Scheduled Jobs)的標準協定。一個標準的 Cron 表達式由五個以空格分隔的欄位組成,分別代表不同的時間維度。本工具能將單行的 Cron 表達式拆解,並即時計算出後續的具體執行時間。

欄位結構與語法規則

標準 Cron 語法包含以下五個欄位,從左至右依序為:

  1. 分鐘:允許值為 0-59
  2. 小時 (Hour):允許值為 0-23
  3. 日期:允許值為 1-31
  4. 月份:允許值為 1-12 或英文縮寫如 JANFEB 等。
  5. 星期:允許值為 0-6(0 通常代表星期日)或英文縮寫如 MONTUE 等。

本工具支援多種常見的符號語法:

  • 星號 (*):代表該欄位的「任意」值。
  • 範圍 (-):例如 9-17,表示在該區間內持續觸發。
  • 步進 (/):例如 */15,在「分鐘」欄位代表「每 15 分鐘」。
  • 清單 (,):例如 1,15,表示在指定的特定數值觸發。
  • 預設簡寫:支援 @yearly@monthly@weekly@daily@hourly

需要注意的是,本工具專注於標準 5 位 Cron 語法,並不支援包含第六個欄位的「秒」解析,亦不支援如 LW# 等特定擴充語法。


欄位解讀與輸出說明

當輸入有效的 Cron 表達式後,工具會將其拆解為「欄位解讀」,並提供以下對應資訊:

  • 分鐘:解析後的分鐘設定。
  • 小時:解析後的小時設定。
  • 日期:解析後的日期設定。
  • 月份:解析後的月份設定。
  • 星期:解析後的星期設定。

對於步進格式 */n,系統會自動轉換為直觀的文字說明,例如「每 {n} 分鐘」、「每 {n} 小時」、「每 {n} 天」(適用於日期與星期欄位)或「每 {n} 個月」。若欄位為 *,則會顯示為「任意」。

此外,工具會根據「數量」設定(可調整範圍為 1 至 20 筆),計算並列出「接下來的執行時間」。


常見排程邏輯與邊界情況

日期與星期的聯集關係

在 Cron 的設計規範中,有一個特殊的邏輯:當「日期」與「星期」兩個欄位同時被限定(即兩者皆非 * 號)時,排程器會以「或(OR)」的邏輯運作。這意味著只要系統時間符合「指定的日期」或「指定的星期」其中之一,任務就會執行,而非兩者必須同時滿足。

永遠無法執行的排程

若 Cron 表達式語法正確,但設定了物理上不可能出現的時間組合,工具會顯示錯誤提示:「這個排程永遠不會執行——請檢查日期是否選了某些月份沒有的天數。」

這通常發生在將「日期」指定為 31,但「月份」欄位中包含了只有 30 天或更少天數的月份(例如 4 月、6 月、9 月、11 月或 2 月)。由於排程器在這些月份找不到第 31 天,該設定將無法在這些月份執行。


瀏覽器本地解析與隱私保護

本工具採用純用戶端(Client-side)處理機制。當你在「Cron 表達式」輸入框輸入內容或調整「數量」時,所有的語法解析與時間計算皆直接在你的瀏覽器本地完成。

你的 Cron 表達式會在瀏覽器本地解析,不會傳送到 BroBroGo。這確保了排程設定與參數不會經由網路外洩。若輸入框被清空,工具會直接返回「輸入 Cron 表達式即可解析。」的初始狀態;若輸入不合法的語法,則會即時顯示「無效的 Cron 表達式。」。


常見問題 FAQ

這個工具支援哪些 Cron 語法?

標準 5 位欄位——分鐘、小時、日期、月份、星期——支援範圍(1-5)、步進(*/15)、清單(1,15)、英文月份/星期縮寫(JAN、MON),以及 @yearly/@monthly/@weekly/@daily/@hourly 這些簡寫。有個容易忽略的規則:當「日期」和「星期」兩個欄位都被限定(不是 *)時,只要符合其中一個就算符合,不需要同時符合。

「接下來的執行時間」是哪個時區?

是你瀏覽器所在系統的本地時區。標準 Cron 表達式本身不帶時區資訊,實際用哪個時區由執行它的排程器決定,所以這裡顯示的是你本地時鐘下的預覽,不一定和伺服器一致。

為什麼顯示「這個排程永遠不會執行」?

通常是日期欄位選了某些月份根本沒有的天數——例如把日期設成 31,月份又包含 4、6、9、11 月。把日期改成所有選中月份都存在天數,或拆成幾條個別的表達式即可。