ZonoTools
首頁/開發者工具/Cron Format Converter

Cron 格式轉換器

在經典的 5 字段 Unix cron 與 6 字段 Quartz / Spring 风格之間轉換(秒在前;當 day-of-month 與 day-of-week 衝突時使用 ?)。

Quartz(6 個字段:sec min hour dom mon dow)

0 0 9 ? * 1-5

使用方法

  1. 貼上您的 cron 表達式並選擇來源格式和目標格式(Unix、Quartz 或 Spring)。
  2. 檢查轉換後的表達式,注意新增或刪除的秒字段。
  3. 驗證特殊字符,如?L#,這些字符存在於 Quartz/Spring 中,但不存在於標準 Unix cron 中。

常見問题

Unix 和 Quartz cron 有什麼不同?

Unix cron 使用 5 個欄位(分鐘到工作日)。 Quartz 使用 6 或 7 個字段,添加一個前導秒字段和一個可選的尾隨年份,以及額外的字符,如?、L、W 和 #。

為什麼 Spring cron 有 6 個欄位?

Spring 的調度程式首先需要秒字段,因此 Spring 表達式有 6 個字段:秒、分、小時、月份中的某一天、月份和星期幾。

每個表達式都能乾淨地轉換嗎?

大多數都可以,但是 Quartz/Spring 獨有的功能,例如 L(最後一個)或 #(第 n 個工作天)沒有 Unix 等效項,需要手動檢查。

介紹

cron 格式轉換器彌合了 Unix cron、Quartz (Java) 和 Spring 調度程式之間的差異。將 Linux crontab 中的表達式直接複製到 Quartz 作業中是一個典型的錯誤 - 字段計數不同,並且缺少秒字段會改變一切。

按格式劃分的欄位計數

Format Fields Order
Unix 5 分鐘、小時、日、月、工作日
Spring 6 秒、分、時、日、月、工作日
Quartz 6-7 秒、分、時、日、月、工作日、(年)

因此 Unix0 9 * * 1-5變成 Spring0 0 9 * * 1-5(前置了0秒欄位)。

值得關注的特殊字符

字元 說明 支援於
? 無具體數值 石英、彈簧
L 最後一天/工作日 石英、彈簧
W 最近的工作日 Quartz
# 每月第 N 個工作天 石英、彈簧

標準 Unix cron 不理解這些,因此將它們轉換為 Unix 需要手動解決方法。

常見用例

  • 將 Linux crontab 計畫移植到 Spring@Scheduled註解中。
  • 將 Quartz 作業移轉到基於 Unix 的排程器或容器 CronJob。
  • 跨多語言堆疊協調時間表。

最佳實踐

  • 轉換為 Unix 或從 Unix 轉換後,請務必仔細檢查秒字段。
  • 標記任何LW#用法以進行手動審查 — 沒有乾淨的 Unix 等效項。
  • 使用cron expression validator驗證結果並使用cron next run calculator確認時序。