cron 式は次にいつ動く?日本時間で調べる

空白で区切った 5 つの欄を、日本時間で数えます。

0 9 * * 1-5

次の実行(日本時間)

2026年11月2日(月)9:00

次の 10 回のうち 11/3(火・文化の日)が祝日

Google カレンダーに入れる
式の意味
平日の 9 時 0 分
祝日に当たる実行
1 回(11/3 文化の日)
10 回目の実行
2026年11月13日(金)9:00
UTC で書くと次の実行は
11月2日(月)0:00(UTC)

日本時間(JST)で、いまから先の 10 回を数えています。数えるのは 2030 年末までなので、10 回に満たないときはそこで日が尽きています。日と曜日を両方書いた式は、どちらか一方に当たる日に動きます(OR)。式を変えると、結果と表と図がすぐ変わります。

次の 10 回の実行

2026年11月
日月火水木金土
12実行する日3文化の日・実行する日・祝日に当たる実行4実行する日5実行する日6実行する日7
89実行する日10実行する日11実行する日12実行する日13実行する日14
15161718192021
2223勤労感謝の日2425262728
2930
  • 土日・祝日
  • 実行する日
  • 祝日に当たる実行
次の 10 回の実行は、11/2(月)から 11/13(金)まで。

入れた式で動く、いまから先の 10 回です。日本時間の列は、いまの年と違う年の行にだけ年を付けています。UTC で書くときの時刻は、上の答えの「UTC で書くと次の実行は」に出ています(日本時間から 9 時間引きます)。祝日の列は、その日が日本の祝日のときの名前です。

次の 10 回の実行
日本時間祝日
11/2(月)9:00—
11/3(火)9:00文化の日
11/4(水)9:00—
11/5(木)9:00—
11/6(金)9:00—
11/9(月)9:00—
11/10(火)9:00—
11/11(水)9:00—
11/12(木)9:00—
11/13(金)9:00—

数え方と結果の読み方

計算の仕方

次の実行=いまより後で、分・時・日・月・曜日の 5 つの欄が全部当てはまる、いちばん早い時刻

  • 分 時 日 月 曜日の 5 つの欄を、それぞれ「動く値の集まり」に直します(* は全部、1-5 は 1 から 5、*/15 は 15 ごと、, は並べる)。
  • 日と曜日の両方を指定したときは、どちらか一方に当たる日が動く日になります(OR)。どちらかが * から始まるときは、両方に当たる日だけです。
  • いまの時刻(日本時間)から 1 日ずつ進み、月と日が当たる日の中で、時と分の組み合わせを早い順に拾います。
  • 拾った 10 回の日付を内閣府の「国民の祝日」と照らし、祝日に当たる回に印を付けます。

結果の読み方と使いどころ

図の月の格子は、次の 10 回の実行日を含む月を並べ、実行する日に ●、祝日に当たる実行に × の印を付けています。答えの「UTC で書くと次の実行は」は、UTC で動くサーバーに同じ時刻で動かしたいときに書く時刻です(日本時間から 9 時間引きます)。

日本時間の 9 時 0 分は、UTC の 0 時 0 分です。日本時間の 0〜8 時台に動かしたいときは、UTC では前の日の 15〜23 時台になるので、日と曜日の欄もずらします。

cron の式だけでは、祝日を外すことはできません。祝日に動かしたくない処理は、× の印が付いた日を目安に、スクリプトの先頭で日本の祝日かどうかを判定して終了させます。

よく使う cron 式の早見

分 時 日 月 曜日の順です。意味は、この道具が式から読み取った言葉です。曜日の 0 と 7 はどちらも日曜です。

よく使う cron 式の早見
式意味
* * * * *毎分
0 * * * *毎時 0 分(1 時間ごと)
*/15 * * * *15 分ごと
0 9 * * *毎日 9 時 0 分
0 9 * * 1-5平日の 9 時 0 分
0 9 * * 1毎週月曜の 9 時 0 分
0 0 1 * *毎月 1 日の 0 時 0 分
0 0 1 1,4,7,10 *1・4・7・10 月 1 日の 0 時 0 分(四半期の初日)
0 0 1 1 *1 月 1 日の 0 時 0 分(毎年の元日)
30 8 * * 6,7土日の 8 時 30 分
0 9-17 * * 1-5平日の 9〜17 時の 0 分

標準の cron では書けない条件

どれも、スクリプトの側で条件を判定して止める書き方です。

標準の cron では書けない条件
やりたいこと書き方
毎月の最終日毎日動かして、スクリプトで「明日が 1 日か」を判定
祝日を除く平日(1-5)で動かして、スクリプトで祝日なら終了
第 2 月曜など曜日だけで動かして、スクリプトで日を判定
日本時間で動かすCRON_TZ=Asia/Tokyo か、UTC に直して書く
  • 毎月の最終日: 式だけでは書けません。日を 28-31 にして、先頭で判定します。例: 0 0 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /path/to/job
  • 祝日を除く: 式だけでは外せません。祝日の日付は、上の表の祝日の列や、内閣府の「国民の祝日」の一覧から取れます。
  • 第 2 月曜など: 日と曜日を両方書くと OR になり、毎週の月曜と 8〜14 日の両方で動いてしまいます。
  • 日本時間で動かす: 式の上の行に CRON_TZ=Asia/Tokyo と書くと日本時間で動く cron もあります(使えない環境もあります)。日本時間の 9 時は UTC の 0 時で、日本時間の 0〜8 時台は UTC では前の日になります。

よくある間違い

日と曜日を両方書くと「かつ」になると思う

日と曜日の両方に * 以外を書くと、どちらか一方に当たる日に動きます(Vixie cron の決まり)。「毎月 1 日で、しかも月曜」だけ動かすことはできないので、曜日だけで動かしてスクリプトで日を判定します。

UTC のサーバーなのに、日本時間の時刻を書く

cron はサーバーの時刻で動きます。UTC のサーバーなら、日本時間の 9 時は 0 時と書きます。クラウドの定期実行の多くは UTC が基準です。

祝日は自動で除かれると思う

cron に祝日の知識はありません。祝日に動かしたくない処理は、スクリプトの先頭で判定します。

日を 29〜31 と書いて、毎月動くと思う

29〜31 日は、その日が無い月には動きません。「0 0 28-31 * *」は、2 月は 28 日(うるう年は 29 日)までの日だけ動きます。

毎月の最終日を 31 と書く

日に 31 と書くと、30 日までの月では動きません。毎月の最終日は式では書けないので、上の表の方法で判定します。

よくある質問

秒つきの式や @daily は使えますか?

この道具は、分・時・日・月・曜日の 5 つの欄の式だけに対応します。秒つきの式、@daily などの省略形、L・W・# を使う書き方(Quartz など)は数えません。

入れた式はどこかに送られますか?

計算はこの端末のブラウザの中だけで行い、式はどこにも送りません。祝日の表はページと一緒に読み込んでいます。「Google カレンダーに入れる」を押したときだけ、予定の題と日付が Google に送られます。

何年先まで数えますか?

今年から数えて 5 年目の年末までです。2月30日のように無い日だけを指定した式は、動く日が見つからないと知らせます。