Cron式パーサー&ビルダー - Crontab Guru代替ツール
Cron式をビジュアルに解析、説明、構築。次回実行時間の確認、人間が読める説明、crontab構文の検証をオンラインで。
よくある質問
Cron式とは何ですか?
Cron式は、5-7個のフィールドで構成され、タスク実行のスケジュールを表す文字列です。元々Unix系システムでcronジョブのスケジューリングに使用されていたこの構文は、現在ではクラウドサービス(AWS、Azure、GCP)、CI/CDパイプライン、アプリケーションフレームワークで広く使用されています。各フィールドはタスクの実行タイミングを指定します:分、時、日、月、曜日。
このCronパーサーツールの使い方は?
入力フィールドにcron式を入力してください(例:0 9 * * 1-5)。ツールが即座に解析し、人間が読める説明と次の実行予定時刻を表示します。プリセットドロップダウンを使って一般的なスケジュールを素早く選択できます。Buildタブに切り替えると、各フィールドの値を選択して視覚的に式を作成できます。
私のCron式データは安全ですか?
はい。あなたのcron式は100%安全で、ブラウザの外に出ることはありません。すべての解析と計算はJavaScriptを使用してクライアント側で実行されます。データはサーバーに送信されないため、テストが必要なあらゆるスケジューリングパターンに対して安全に使用できます。
標準cron形式と拡張cron形式の違いは何ですか?
標準Unix cronは5つのフィールドを使用します:分、時、日、月、曜日。拡張形式は先頭に秒フィールドを追加し、合計6フィールドになります。Quartz(Java)などの一部のシステムは、年も含む7フィールド形式を使用します。このツールは標準5フィールドと拡張6フィールドの両方の形式をサポートしています。
なぜ日付フィールドが2つ(日と曜日)あるのですか?
どちらかまたは両方を指定できます。両方がワイルドカード以外の値で指定されている場合、どちらかの条件が満たされたときにジョブが実行されます(両方ではなく)。例えば、'0 9 15 * 1'は'毎月15日の午前9時または毎週月曜日の午前9時'を意味します — '15日が月曜日の場合の午前9時'ではありません。
'5分ごと'のcron式はどう作りますか?
*/5 * * * *を使用してください。/5は'5番目の値ごと'を意味します。同様に、*/15 * * * *は15分ごと、0 */2 * * *は2時間ごとの0分に実行されます。
Cronはどのタイムゾーンを使用しますか?
デフォルトでは、cronはシステムのローカルタイムゾーンを使用します。クラウドサービスでは、タイムゾーンを指定できることが多いです。このツールは次の実行時刻をブラウザのローカルタイムゾーンで表示します。
コード例
// Simple cron expression parser
function parseCronExpression(expression) {
const parts = expression.trim().split(/\s+/);
if (parts.length !== 5) {
throw new Error('Invalid cron expression: expected 5 fields');
}
const [minute, hour, dayOfMonth, month, dayOfWeek] = parts;
function parseField(field, min, max) {
if (field === '*') {
return Array.from({ length: max - min + 1 }, (_, i) => min + i);
}
const values = new Set();
field.split(',').forEach(part => {
if (part.includes('/')) {
const [range, step] = part.split('/');
const stepNum = parseInt(step, 10);
let start = min, end = max;
if (range !== '*' && range.includes('-')) {
[start, end] = range.split('-').map(Number);
}
for (let i = start; i <= end; i += stepNum) values.add(i);
} else if (part.includes('-')) {
const [start, end] = part.split('-').map(Number);
for (let i = start; i <= end; i++) values.add(i);
} else {
values.add(parseInt(part, 10));
}
});
return Array.from(values).sort((a, b) => a - b);
}
return {
minute: parseField(minute, 0, 59),
hour: parseField(hour, 0, 23),
dayOfMonth: parseField(dayOfMonth, 1, 31),
month: parseField(month, 1, 12),
dayOfWeek: parseField(dayOfWeek, 0, 6),
};
}
// Example usage
const expr = '0 9 * * 1-5';
console.log('Parsed:', parseCronExpression(expr));