Cron Expression Parser

Urai cron expression menjadi deskripsi yang mudah dibaca dan pratinjau waktu eksekusi berikutnya

Coba contoh

Cron expression

minute hour day(month) month day(week)

Deskripsi yang mudah dibaca

At 9:00 AM, Mon, Tue, Wed, Thu, Fri

Rincian field

Minute

0

0โ€“59

Hour

9

0โ€“23

Day (month)

*

1โ€“31

Month

*

1โ€“12

Day (week)

1-5

0โ€“6

10 jadwal eksekusi berikutnya

12026-03-26 09:00:00
22026-03-27 09:00:00
32026-03-30 09:00:00
42026-03-31 09:00:00
52026-04-01 09:00:00
62026-04-02 09:00:00
72026-04-03 09:00:00
82026-04-06 09:00:00
92026-04-07 09:00:00
102026-04-08 09:00:00

Apa Itu Penguraian Cron Expression?

Cron expression adalah string yang terdiri dari lima field yang dipisahkan spasi untuk mendefinisikan jadwal berulang. Format ini berasal dari daemon cron Unix, yang pertama kali ditulis oleh Ken Thompson untuk Version 7 Unix pada tahun 1979. Setiap field mewakili satuan waktu: menit, jam, hari dalam sebulan, bulan, dan hari dalam seminggu. Mengurai cron expression berarti mengonversi notasi ringkas ini menjadi deskripsi yang mudah dibaca dan daftar konkret waktu eksekusi mendatang.

Format lima field standar digunakan oleh crontab di Linux dan macOS, oleh platform CI/CD seperti GitHub Actions dan GitLab CI, oleh cloud scheduler di AWS (EventBridge), Google Cloud Scheduler, dan Azure Functions, serta oleh pustaka penjadwalan job di setiap bahasa pemrograman utama. Beberapa sistem memperluas format menjadi enam atau tujuh field dengan menambahkan field detik atau field tahun, tetapi tata letak lima field yang didefinisikan oleh POSIX tetap menjadi dasar yang digunakan oleh semua implementasi.

Mengurai cron expression secara manual rentan terhadap kesalahan. Interaksi antar field menghasilkan jadwal yang tidak langsung terlihat jelas: 0 9 1-7 * 1 tidak berarti 'setiap Senin di minggu pertama' melainkan 'tanggal 1 hingga 7 setiap bulan ATAU setiap Senin.' Cron parser menghilangkan ambiguitas ini dengan memperluas setiap field, menerapkan aturan kombinasi, dan menghasilkan timestamp aktual kapan job akan dijalankan.

Mengapa Menggunakan Cron Parser Ini?

Membaca cron expression seperti 30 */6 1,15 * * dari file konfigurasi dan mengetahui kapan tepatnya ia berjalan memerlukan perhitungan mental di lima field sekaligus. Parser ini melakukan pekerjaan tersebut secara instan.

โšก
Penguraian Instan
Ketik atau tempel cron expression dan lihat deskripsi yang mudah dibaca serta 10 jadwal eksekusi berikutnya secara langsung. Tidak ada tombol submit, tidak ada reload.
๐Ÿ”’
Pemrosesan Mengutamakan Privasi
Semua penguraian berjalan secara lokal di browser Anda. Cron expression dan data jadwal Anda tidak pernah meninggalkan perangkat Anda.
๐Ÿ“‹
Rincian Field per Field
Setiap dari lima field diurai dan ditampilkan secara individual, menunjukkan nilai yang telah diurai. Kenali field mana yang mengontrol jadwal dengan sekali pandang.
๐Ÿ”„
Tanpa Akun
Buka halaman dan mulai mengurai. Tidak perlu login, API key, maupun instalasi. Bekerja di perangkat apa pun dengan browser modern.

Kasus Penggunaan Cron Parser

Frontend Developer
Verifikasi cron expression di dashboard admin dan UI penjadwalan sebelum mengirimkannya ke backend. Pastikan jadwal yang dipilih pengguna di dropdown sesuai dengan cron string yang dihasilkan oleh form.
Backend Engineer
Debug scheduled job yang berjalan pada waktu yang tidak terduga. Tempel cron expression dari konfigurasi task queue Anda (Celery, Sidekiq, Quartz) dan periksa apakah waktu eksekusi berikutnya sesuai dengan yang diharapkan.
DevOps / SRE
Audit jadwal cron di pipeline CI/CD, Kubernetes CronJobs, dan konfigurasi cloud scheduler. Verifikasi bahwa job backup, pembaruan sertifikat, dan skrip pembersihan dijadwalkan dengan benar sebelum deployment.
QA Engineer
Validasi bahwa tugas terjadwal di lingkungan pengujian sesuai dengan jadwal produksi. Tangkap kesalahan off-by-one pada field bulan atau hari-dalam-seminggu sebelum menyebabkan eksekusi yang terlewat di produksi.
Data Engineer
Periksa pemicu cron untuk pipeline ETL dan job sinkronisasi data. Pastikan jendela ekstraksi tidak tumpang tindih dan dependensi hilir memiliki cukup waktu persiapan.
Pelajar / Pemula
Pelajari sintaks cron dengan bereksperimen menggunakan berbagai expression dan melihat hasilnya secara langsung. Bangun intuisi tentang bagaimana wildcard, range, dan nilai step saling berinteraksi.

Referensi Sintaks Cron Expression

Cron expression standar memiliki lima field yang dipisahkan spasi. Setiap field menerima bilangan bulat, wildcard, range, daftar, dan nilai step. Tabel di bawah ini menunjukkan rentang yang diizinkan dan operator untuk setiap field.

FieldRentangOperatorDeskripsi
Minute0โ€“59* , - /Minute within the hour
Hour0โ€“23* , - /Hour of the day (24-hour)
Day (month)1โ€“31* , - /Day of the month
Month1โ€“12* , - /Month of the year (or JANโ€“DEC)
Day (week)0โ€“6* , - /Day of the week (0 = Sunday, or SUNโ€“SAT)

Empat karakter khusus mengontrol cara nilai dicocokkan dalam setiap field:

KarakterNamaPerilaku
*WildcardMatches every possible value in the field. * in the minute field means "every minute."
,ListSeparates individual values. 1,15 in the day field means "the 1st and 15th."
-RangeDefines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday."
/StepDefines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50."

Berikut adalah cron expression umum yang mencakup sebagian besar kebutuhan penjadwalan:

ExpressionJadwal
* * * * *Every minute
0 * * * *Every hour (at minute 0)
*/15 * * * *Every 15 minutes
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
30 2 * * 0Every Sunday at 2:30 AM
0 0 1 * *First day of every month at midnight
0 0 * * 1Every Monday at midnight
0 0 1 1 *January 1st at midnight (yearly)
0 */6 * * *Every 6 hours
5,35 * * * *At minute 5 and 35 of every hour
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, weekdays

Contoh Kode

Cara mengurai cron expression dan menghitung waktu eksekusi berikutnya dalam bahasa pemrograman populer:

JavaScript (Node.js)
import cronstrue from 'cronstrue';

// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// โ†’ "At 09:00 AM, Monday through Friday"

cronstrue.toString('*/15 * * * *');
// โ†’ "Every 15 minutes"

// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';

const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// โ†’ next Sunday at 02:30 UTC

// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
  console.log(interval.next().toString());
}
Python
from crontab import CronTab
from croniter import croniter
from datetime import datetime

# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# โ†’ seconds until next run

# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
    print(cron_iter.get_next(datetime))
# โ†’ next 5 weekday 09:00 timestamps

# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# โ†’ True (minute 30 is divisible by 15)
Go
package main

import (
    "fmt"
    "time"
    "github.com/robfig/cron/v3"
)

func main() {
    // Parse a standard 5-field cron expression
    parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
    schedule, err := parser.Parse("0 9 * * 1-5")
    if err != nil {
        panic(err)
    }

    // Calculate the next 5 run times
    now := time.Now()
    for i := 0; i < 5; i++ {
        now = schedule.Next(now)
        fmt.Println(now)
    }
    // โ†’ next 5 weekday 09:00 timestamps
}
Bash (crontab)
# List current user's cron jobs
crontab -l

# Edit cron jobs interactively
crontab -e

# Add a job: run backup.sh every day at 2:30 AM
# (append to crontab via pipe)
(crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab -

# Check syntax with a dry-run parse (requires cronie or busybox)
# The system will reject invalid expressions when saving

# View cron logs on systemd-based Linux
journalctl -u cron --since "1 hour ago"

Pertanyaan yang Sering Diajukan

Apa perbedaan antara cron expression 5-field dan 6-field?
Format cron standar (POSIX) memiliki 5 field: menit, jam, hari-dalam-bulan, bulan, hari-dalam-minggu. Beberapa alat seperti Quartz Scheduler dan Spring menambahkan field detik di awal, sehingga menjadi 6 field. AWS EventBridge menggunakan 6 field dengan field tahun di akhir. Parser ini mendukung format 5-field standar, yang kompatibel dengan crontab, GitHub Actions, Kubernetes CronJobs, dan sebagian besar pustaka penjadwalan.
Bagaimana cron menangani hari-dalam-bulan dan hari-dalam-minggu secara bersamaan?
Ketika kedua field dibatasi (bukan *), cron menggunakan logika OR: job berjalan ketika salah satu kondisi terpenuhi. Misalnya, 0 9 15 * 1 berarti 'pukul 09.00 pada tanggal 15 setiap bulan ATAU setiap Senin.' Ini adalah sumber kebingungan yang umum. Jika kedua field diatur ke *, job berjalan setiap hari.
Zona waktu apa yang digunakan cron?
crontab tradisional berjalan dalam zona waktu lokal sistem. Kubernetes CronJobs menggunakan zona waktu kube-controller-manager secara default (biasanya UTC) tetapi mendukung field .spec.timeZone opsional sejak Kubernetes 1.25. AWS EventBridge dan Google Cloud Scheduler memungkinkan Anda menentukan zona waktu per jadwal. Selalu periksa zona waktu yang digunakan scheduler Anda sebelum men-deploy cron job.
Bisakah cron menjalankan job setiap 30 detik?
Cron 5-field standar tidak mendukung penjadwalan di bawah satu menit. Interval terkecil adalah satu menit (*/1 atau *). Untuk menjalankan sesuatu setiap 30 detik, Anda memerlukan cron 6-field dengan field detik (Quartz, Spring), skrip wrapper yang tidur 30 detik lalu berjalan lagi, atau mekanisme penjadwalan berbeda seperti systemd timer dengan OnCalendar.
Apakah 0 sama dengan 7 untuk field hari-dalam-minggu?
Pada sebagian besar implementasi cron, 0 dan 7 sama-sama mewakili Minggu. Konvensi ini berasal dari cron Unix asli. Namun, beberapa sistem (Quartz) menggunakan 1 untuk Minggu dan 7 untuk Sabtu. POSIX mendefinisikan rentang sebagai 0-6 dengan 0 = Minggu. Jika scheduler Anda menerima nama hari (SUN, MON), gunakan nama tersebut untuk menghindari ambiguitas.
Apa yang terjadi jika saya menetapkan hari-dalam-bulan yang tidak ada?
Jika Anda menjadwalkan job untuk tanggal 31 (0 0 31 * *), job tidak akan berjalan pada bulan yang memiliki kurang dari 31 hari. Cron tidak meneruskan ke bulan berikutnya. Februari akan selalu dilewati, begitu juga April, Juni, September, dan November. Untuk menjalankan pada hari terakhir setiap bulan, beberapa implementasi cron mendukung modifier L (0 0 L * *), tetapi cron POSIX standar tidak mendukungnya.
Bagaimana cara menguji cron expression sebelum men-deploy-nya?
Gunakan parser online seperti ini untuk melihat waktu eksekusi berikutnya dan memverifikasi jadwal sesuai dengan tujuan Anda. Untuk validasi produksi, sebagian besar pustaka cron menyediakan fungsi kalkulasi eksekusi berikutnya: cron-parser di Node.js, croniter di Python, robfig/cron di Go. Jalankan expression melalui salah satu dari ini di test suite Anda untuk memastikan N waktu eksekusi berikutnya sebelum deployment.