本文へスキップ

Cron式解説ツールベータ

Cron式を読みやすい文章に変換し、次の実行時刻を好きなタイムゾーンでプレビューできるツールです。フィールドの文法とマクロの早見表も付いています。

5フィールド

説明

次において実施09:00、月曜日 から 金曜日 まで

次の実行時刻

ブラウザのタイムゾーン: UTC

有効な式を入力すると次の実行時刻が表示されます。

フィールド早見表

フィールド早見表
フィールド意味値
秒秒(6フィールドの場合のみ)0〜59
分分0〜59
時時0〜23
日日(日付)1〜31
月月1〜12 または JAN〜DEC
曜日曜日0〜7(0と7はどちらも日曜日)または SUN〜SAT

L・W・#・? のようなQuartz(Javaスケジューラ)専用の記号には対応していません。標準の5・6フィールド構文のみ扱います。

よく使うマクロ

例

Cron式は短い分、パッと見ただけでは読み解きにくいものです。*/15 9-17 * * 1-5 が正確にいつ実行されるのかをドキュメントで調べる代わりに、ここに貼り付ければ文章での説明と実際の次の実行時刻がわかります。

フィールドの文法

標準のcronは左から分・時・日・月・曜日の順で5フィールドです。このツールは先頭に秒フィールドを追加した6フィールド形式(秒・分・時・日・月・曜日)も認識します。

  • 分: 0〜59
  • 時: 0〜23
  • 日: 1〜31
  • 月: 1〜12 または JAN〜DEC
  • 曜日: 0〜7(0と7はどちらも日曜日)または SUN〜SAT
  • 秒(6フィールドのときのみ): 0〜59

各フィールドでは次の記法が使えます。

  • * — すべての値(「毎分」「毎時」)
  • 5 — 特定の値そのもの
  • 1-5 — 範囲(月曜日から金曜日)
  • */15 — 間隔(0から15ずつ: 0, 15, 30, 45)
  • 1,15,30 — カンマ区切りのリスト

よく使うマクロにも対応しています: @yearly(0 0 1 1 *)、@monthly(0 0 1 * *)、@weekly(0 0 * * 0)、@daily(0 0 * * *)、@hourly(0 * * * *)。@rebootは決まった時刻がないため対応していません。

Unix cron・Quartz・クラウドスケジューラの方言の違い

「cron式」と呼ばれていても、システムによって文法は少しずつ異なります。

  • Unix cron(crontab): 標準の5フィールド。曜日は0〜7(0と7はどちらも日曜日)で、各フィールドは値・範囲・リスト・間隔(*/n)のみに対応します。
  • Quartz(Javaのスケジューラ): 6〜7フィールドで、先頭に秒、末尾に年(任意)が付きます。曜日の値がUnix cronと異なり1〜7(1=日曜日)で、L(その月・週の最終日)、W(最も近い平日)、#(例: 6#3 は第3金曜日)、?(day-of-monthかday-of-weekのどちらかを未指定にする)といったUnix cronにない記号を使います。また、day-of-monthとday-of-weekの両方に*を同時に使うことはできません。
  • クラウドスケジューラ(AWS EventBridge、Google Cloud Schedulerなど): おおむねUnix cronに近いものの、細かいルールが異なることがあります。例えばAWS EventBridgeはQuartzのような6フィールド(秒なしで分から始まり、末尾に年)を使い、day-of-monthとday-of-weekのどちらかに必ず?を入れる必要があります。

このツールが検証・説明するのは標準の5・6フィールド(先頭が秒)構文のみです。Quartzや特定のクラウドサービス専用の記号(L・W・#・?、年フィールドなど)には対応していないため、実際にそのサービスへ登録する前に該当サービスのドキュメントで再確認してください。

サマータイム(DST)で気をつけたいこと

タイムゾーンを指定して次の実行時刻を計算するとき、サマータイムのある地域では次の2点を知っておくと役立ちます。

  1. 切り替え開始日に存在しない時刻: サマータイムが始まる日は時計が1時間進むため、特定の時刻(多くは午前2時台)がそもそも存在しません。このツールが計算に使う日付ライブラリは、そうした時刻を切り替え前のオフセットで解釈して表示します。
  2. 終了日に2回訪れる時刻: サマータイムが終わる日は時計を1時間戻すため、同じ時刻が2回訪れます。このツールはその時刻を1回だけ表示します。

深夜1時〜3時台に実行されるよう予定しているジョブがあれば、サマータイムの切り替え日前後の実行時刻をこのツールで一度確認しておくことをおすすめします。

参考資料

よくある質問

5フィールドと6フィールド(秒あり)の式は何が違いますか?

標準のcronは分・時・日・月・曜日の5フィールドです。このツールは先頭に秒フィールドを追加した6フィールド形式にも対応しています(例: 30 0 9 * * 1-5 は平日の9時0分30秒)。実際に登録するスケジューラが秒に対応しているかは製品によって異なるので、導入先のドキュメントを確認してください。

@rebootが使えないのはなぜですか?

@rebootは「システム起動時に実行する」という意味で、決まった時刻がありません。このツールは次の実行時刻を計算するためのものなので、時刻を計算できない@rebootは対応リストから外しています。

QuartzのL・W・#・?のような記号も使えますか?

使えません。このツールはUnix cron系の標準的な5・6フィールド構文のみを扱います。L(その月・週の最終日)、W(最も近い平日)、#(第N番目の曜日)といったQuartz専用の拡張構文については、下記の「方言の違い」を参照してください。

サマータイムの期間に実行時刻がずれることがあるのはなぜですか?

サマータイムが始まる日は時計が1時間進むため、存在しない時刻(多くは午前2時台)が生まれ、終わる日は1時間戻すため同じ時刻が2回訪れます。このツールが使う日付ライブラリは、存在しない時刻を切り替え前のオフセットで計算し、2回訪れる時刻は1回だけ表示します。深夜1時〜3時台に実行される予定がある場合は、サマータイムの切り替え日前後を一度確認することをおすすめします。

「次の実行時刻」はどのタイムゾーン基準ですか?

選んだタイムゾーンで計算します。初期値はこのブラウザが報告するタイムゾーンで、画面には常にどのタイムゾーンかが表示されます。実際にcronジョブが動くサーバーが別のタイムゾーンなら、そちらに切り替えて確認してください。

使用しているオープンソース: cronstrue (MIT), cron-parser (MIT), Luxon (MIT)