本文へスキップ
CronExplain

Quartz Cron 式の解説

Quartz Scheduler は多くの Java アプリケーションで使われるジョブライブラリで、Unix の crontab より表現力の高い Cron 形式を使います。下に Quartz の式を貼り付けると、日本語の説明と次回実行時刻を確認し、他の方言に変換できます。

意味

Quartz: 先頭が秒、年は任意、1 = 日曜日。日と曜日のどちらか一方を必ず「?」にします。L・W・# に対応。

✓ 有効 · 意味

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

プリセット

次の 10 回の実行

#UTC の時刻あなたの現地時刻
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

他の方言での同じスケジュール

  • 標準 crontab0 12 * * 1-5
  • AWS EventBridgecron(0 12 ? * MON-FRI *)EventBridge ルールは UTC を使用します。
  • Spring0 0 12 * * MON-FRI

ビジュアルビルダー

フィールドごとに値を選択します。ビルダーは標準の 5 フィールド式を作成し、使用時に選択中の方言へ変換します。

分
時
日
月
曜日
0 9 * * 1-5

Quartz Cron の形式

Quartz の式は 6 つまたは 7 つのフィールドを持ちます。秒、分、時、日、月、曜日、そして任意の年です。たとえば 0 0 12 ? * MON-FRI は平日の正午に実行されます。曜日は 1(日曜日)〜 7(土曜日)で表し、MON や FRI といった略称も範囲指定を含めて使えます。

疑問符のルール

Quartz では日と曜日を同時に指定できません。2 つのフィールドのうちちょうど一方に「特定の値なし」を意味する「?」を入れる必要があります。そのため 0 0 12 * * MON は無効で、0 0 12 ? * MON と書きます。解説ツールはこの誤りをすぐに指摘します。

特殊文字 L・W・#

L は「最後」を意味します。日フィールドの L は月末日、L-3 は月末の 3 日前、曜日フィールドの 6L はその月の最後の金曜日です。W は月をまたがずに指定日に最も近い平日を表し、15W は 15 日に最も近い平日、LW は月の最終平日です。シャープは第 n 曜日を選び、6#3 は第 3 金曜日です。

Quartz の実践

Java コードでは、Quartz の式はトリガーに設定します。例: TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 ? * MON-FRI").inTimeZone(TimeZone.getTimeZone("Asia/Tokyo")))。inTimeZone を指定しないと JVM のデフォルトタイムゾーンが使われます。ミスファイア設定は、予定時刻にスケジューラーが停止していた場合の動作(すぐに 1 回実行するか、次の時刻まで飛ばすか)を決めます。

よくある質問

Quartz Cron と Unix Cron の違いは?
Quartz は先頭に秒、末尾に任意の年を追加し、曜日を 1 = 日曜日から数え、日か曜日の一方に「?」を必須とし、L・W・# に対応しています。
Quartz の式を crontab に変換できますか?
秒が 0 で、年が指定されておらず、L・W・# を使っていなければ可能です。変換ツールが crontab の等価な式を表示するか、変換できない理由を説明します。
0 0/5 * * * ? はどういう意味ですか?
毎日、毎時 0 分から 5 分ごとに、0 秒の時点で実行されます。
Spring の @Scheduled の Cron は Quartz と同じですか?
よく似ていますが、Spring は日曜日を 0 または 7 で表し、年フィールドがなく、「?」も必須ではありません。Spring の式は Spring のページをご利用ください。