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 欄位語法,不支援包含第六個欄位的「秒」設定,亦不支援如 L、W、# 等 Quartz 框架的特殊擴充字元。
執行時間預覽與特殊邏輯
除了欄位解讀,工具還會列出「接下來的執行時間」。你可以透過「數量」數值輸入框,調整想要預覽的後續執行次數,設定範圍為 1 至 20 筆。
在計算預覽時間時,有兩項重要規則:
- 時區顯示:所有預覽的執行時間皆以你目前瀏覽器所在的系統時區為準,畫面上會標示「(本地時間)」。
- 日期與星期的交集邏輯:當「日期」與「星期」兩個欄位同時被指定了特定數值(即兩者皆非
*)時,排程器只要滿足其中一個條件就會執行,不需兩者同時成立。
異常排程偵測
如果輸入的 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 月。把日期改成所有選中月份都存在的天數,或拆成幾條個別的表達式即可。