label84/laravel-hours-helper
Generate Laravel collections of time/date intervals for any period: build dropdown-ready schedules with custom formatting, exclusions, support for past-midnight ranges, and multi-day spans. Simple facade API to create evenly spaced slots like 08:00–09:30 every 30 minutes.
Strengths:
Collection and Carbon integration, enabling seamless use in Blade, APIs, and background jobs without framework bloat.Collection objects, making it easy to unit test and mock in CI pipelines.Weaknesses:
CarbonTimeZone handling.Stack Compatibility:
Model::whereBetween('time', [$start, $end])->get()).SlotJob::dispatch($slot)).Rule::in($validSlots) for form validation.Collection directly in dropdowns or tables.return response()->json($hours->toArray())).Dependencies:
carbon/carbon (bundled).Low Risk:
HoursHelper::create('09:00', '17:00', 30)).Mitigable Risks:
CarbonTimeZone integration.[09:00, 10:00] and [09:30, 10:30]).try-catch for createFromFormat).HoursHelper in unit tests for isolation?HoursHelper facade for clean syntax (e.g., HoursHelper::create()).Collection objects integrate natively with Laravel’s ecosystem (e.g., ->map(), ->filter()).<select>
@foreach ($slots as $slot)
<option>{{ $slot }}</option>
@endforeach
</select>
return response()->json(['slots' => $slots->toArray()]);
$excluded = DB::table('blocked_slots')
->whereBetween('time', [$start, $end])
->pluck('time')
->toArray();
$slots = HoursHelper::create($start, $end, 30, 'H:i', $excluded);
scheduling_slots table.foreach ($slots as $slot) {
SendReminderJob::dispatch($slot);
}
// Before (Custom Carbon Loop)
$slots = [];
for ($time = strtotime('09:00'); $time <= strtotime('17:00'); $time += 1800) {
$slots[] = date('H:i', $time);
}
// After (HoursHelper)
$slots = HoursHelper::create('09:00', '17:00', 30);
HoursHelper for time intervals").CarbonTimeZone integration.composer require label84/laravel-hours-helper.HoursHelper::create() for static intervals.How can I help you explore Laravel packages today?