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 表達式解析器是一個專為開發人員、系統運維人員及技術支援團隊設計的線上工具。它能將單行的 Cron 表達式拆解為獨立的組成欄位,詳細說明每個部分的排程含義,並計算出接下來即將執行的具體時間。

當你在「Cron 表達式」輸入框中輸入表達式後,解析器會立即進行分析。如果輸入框為空,工具會回到「輸入 Cron 表達式即可解析。」的初始狀態。若輸入的語法不正確,系統則會顯示「無效的 Cron 表達式。」。

支援的語法與欄位解讀

本工具支援標準的 5 欄位 Cron 語法,各欄位從左至右依序代表:分鐘、小時、日期、月份、星期。

在「欄位解讀」輸出區域中,各欄位的解析規則如下:

  • 任意值:欄位中的萬用字元 * 會被解析並顯示為「任意」。
  • 步進值:針對 */n 格式,解析器會依據欄位轉換為對應的文字說明,例如「每 {n} 分鐘」、「每 {n} 小時」、「每 {n} 天」(用於日期欄位)、「每 {n} 個月」或「每 {n} 天」(用於星期欄位)。
  • 範圍與清單:支援範圍格式(例如 1-5)、清單格式(例如 1,15)。
  • 名稱縮寫:支援英文月份縮寫(例如 JAN)與星期縮寫(例如 MON)。
  • 常用簡寫:支援 @yearly@monthly@weekly@daily@hourly 等標準快捷格式。

本工具專注於標準 5 欄位語法,不支援包含第六個欄位的「秒」設定,亦不支援如 LW# 等 Quartz 框架的特殊擴充字元。

執行時間預覽與特殊邏輯

除了欄位解讀,工具還會列出「接下來的執行時間」。你可以透過「數量」數值輸入框,調整想要預覽的後續執行次數,設定範圍為 1 至 20 筆。

在計算預覽時間時,有兩項重要規則:

  1. 時區顯示:所有預覽的執行時間皆以你目前瀏覽器所在的系統時區為準,畫面上會標示「(本地時間)」。
  2. 日期與星期的交集邏輯:當「日期」與「星期」兩個欄位同時被指定了特定數值(即兩者皆非 *)時,排程器只要滿足其中一個條件就會執行,不需兩者同時成立。

異常排程偵測

如果輸入的 Cron 表達式語法正確,但邏輯上存在衝突、導致該排程永遠無法觸發時,工具會偵測到此狀況並顯示錯誤提示:「這個排程永遠不會執行——請檢查日期是不是選了某些月份沒有的天數。」。

這種情況最常出現在日期欄位指定為 31,但月份欄位卻包含了只有 30 天或更少天數的月份(例如 4 月、6 月、9 月或 11 月)。

瀏覽器本地處理與隱私

本工具的所有解析與時間計算工作完全在你的瀏覽器本地執行。你的 Cron 表達式不會傳送到 BroBroGo 伺服器,確保排程設定資訊的隱私。


常見問題

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

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

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

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

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

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