cron 式パーサー
`*/15 9-17 * * 1-5` を「平日 9 時から 17 時台まで 15 分ごと」に翻訳します。各フィールドを検証し、何にマッチするかを説明して、次の 5 回の実行時刻を表示します。
声に出して読める説明文
5 つのフィールドを個別に解析し、1 つの文にまとめます(日本語・英語)。範囲は「月曜日〜金曜日」、ステップは「15 分ごと」、リストは自然な形で連結されます。式が不正な場合は、黙って失敗せずどのフィールドがなぜ不正かを示します。
次の 5 回の実行時刻をローカル時間で
スケジュールは読み違えやすいため、現在時刻から先へシミュレートして次の 5 回を曜日付きで一覧表示します。書いたばかりの式が意図どおりかを確かめる最短の方法で、特に日付と曜日を組み合わせた場合に有効です。
多くの人がはまるルール
日付と曜日の両方を指定した場合、cron は「どちらかが一致したとき」に実行します。両方ではありません。したがって `0 0 1 * 1` は毎月 1 日と毎週月曜日の両方で動きます。「第 1 月曜日」にしたい場合は `0 0 1-7 * 1` という定石を使います。
よくある質問
入力した式はサーバーに送信されますか?
いいえ。貼り付けた内容がブラウザの外に出ることはありません。ページは小さな JavaScript を読み込むだけで、計算はすべて手元の端末で行われます。送信先のサーバーそのものが存在しません。 解析も説明文の生成もスケジュールのシミュレーションも、すべて手元のコードで行われます。
どの cron 方言に対応していますか?
標準の 5 フィールド形式(分・時・日・月・曜日)です。Linux の crontab、Kubernetes の CronJob、多くのスケジューラが採用しています。`@daily` `@hourly` などの別名にも対応します。先頭に秒を持つ 6 フィールド形式(Quartz・Spring)は検出して案内しますが、解析は行いません。
実行時刻のタイムゾーンは?
端末のローカルタイムゾーンです。実際の cron デーモンはサーバーのゾーン、または設定されていれば `CRON_TZ` / `TZ` を使います。手元で正しく見えても本番では別の時刻に動くことがあるので、正確な時刻が重要な場合はサーバーのゾーンを確認してください。
`*/5` と `0/5` の違いは?
`*/5` は最小値から 5 つおき(0・5・10…)という意味で、標準的な書き方です。`0/5` は Quartz では同じ意味になりますが、従来の cron では不正です。Quartz を対象にしているのでなければ `*/5` を使ってください。