Schedule Patterns
Monthly, Bimonthly & Quarterly
monthly(), bimonthly(), quarterly(), semiannually(), annually() — day-of-month patterns.
Monthly, Bimonthly & Quarterly
These methods run on specific day(s) of the month at monthly, every-2-months, quarterly, semi-annual, or annual intervals. All support multiple days and an optional start_month anchor.
monthly()
Every month on the given day(s).
$schedule->monthly(['days_of_month' => [1, 15]])->forYear(2025);
bimonthly()
Every 2 months. Optional start_month (1–12) anchors the first occurrence.
$schedule->bimonthly(['days_of_month' => [5, 20], 'start_month' => 2])
->from('2025-01-05')
->to('2025-06-30');
quarterly()
Every 3 months. Optional start_month anchors the first occurrence.
$schedule->quarterly(['days_of_month' => [7, 21], 'start_month' => 2])
->from('2025-02-15')
->to('2025-11-15');
semiannually()
Every 6 months. Optional start_month anchors the first occurrence.
$schedule->semiannually(['days_of_month' => [10], 'start_month' => 3])
->from('2025-03-10')
->to('2025-12-10');
annually()
Every 12 months. Optional start_month anchors the first occurrence.
$schedule->annually(['days_of_month' => [1, 15], 'start_month' => 4])
->from('2025-04-01')
->to('2026-04-01');
Config keys
- day_of_month (int): single day, e.g.
15 - days_of_month (int): multiple days, e.g.
[1, 15] - start_month (int, 1–12): optional anchor month
For first/second/third/fourth/last weekday of the month (e.g. “every 1st Wednesday”), use Monthly ordinal weekday. For intervals of 4, 5, 7, 8, 9, 10, or 11 months, use Dynamic monthly (every X months).
