⏰
免費Cron 表示式建立器
建立、驗證和解釋定時任務的 cron 表示式。即時通俗說明、未來 5 次執行預覽和常用模式預設。
載入後可離線使用
分鐘
(0-59)小時
(0-23)天
(1-31)月
(1-12)星期
(0-7)
(0-59)小時
(0-23)天
(1-31)月
(1-12)星期
(0-7)
自然語言描述
在上午9:00, 週一至週五.
常用模式
相容標準 Unix cron、GitHub Actions、Kubernetes CronJob 及大多數排程系統。使用 * 表示"每",*/5 表示"每 5 個",1-5 表示範圍,1,15 表示特定值。 也接受@hourly、@daily、@weekly、@monthly、@yearly,以及MON-FRI或JAN-DEC等名稱。
工作原理
Cron 表示式產生器完全在你的瀏覽器中執行,使用 lib/cron.ts 中的手寫解析器——沒有外部庫、沒有伺服器呼叫。它校驗表示式,使用瀏覽器內建的 Intl.DateTimeFormat 和 Intl.ListFormat API 取得符合地區習慣的星期和月份名稱,組裝通俗易懂的描述,並透過帶欄位跳過邏輯的時間前推計算接下來的執行時間,而不是逐分鐘暴力列舉。
- 1逐欄位解析表示式解析器將表示式按空白拆分為五個(或六個)欄位,並對每個欄位識別逗號、範圍(如 1-5)、步長寫法(如 */15)以及 MON 或 JAN 這樣的名稱值。@daily 等 @巨集會在解析開始前展開為對應的五欄位形式。無效值或超出範圍的數字會以型別化的錯誤鍵呈現,並對映到本地化的訊息。
- 2組裝易讀的描述lib/cron.ts 中的 describeCron() 通過檢查哪些欄位是萬用字元、哪些是明確集合來建立英文(或本地化)句子。星期和月份名稱透過使用當前語言的 Intl.DateTimeFormat 解析,列表項用 Intl.ListFormat 連線,使連線詞(“和”、逗號或特定語言的形式)與使用者語言一致。
- 3透過欄位跳過計算下次執行時間nextRuns() 從當前時刻開始將 Date 物件向前推進,但會跳過無法符合的整月、整天或整小時,而不是測試每一分鐘。這意味著像 2 月 30 日這樣不可能的計劃會透過五年範圍檢查快速退出,而不是迴圈 260 萬次。
- 4透過網址片段分享表示式你輸入的任何表示式都會以 #expr= 寫入頁面網址片段(透過 window.history.replaceState 防抖 500 ms)。片段絕不會傳送到伺服器;頁面載入時會從中恢復,因此分享或收藏網址即可還原完全相同的表示式,無需任何伺服器狀態。