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.
With laravel-hours-helper you can create an Illuminate\Support\Collection of dates and/or times with a specific interval for a specific period. This helper could be useful in generating dropdown selections for a calendar meeting invite or scheduling the duration of an event. This helper also allows you to define the date formatting for each interval and to exclude intervals within the specific period.
| Version | Release |
|---|---|
| 13.x | ^1.4 |
| 12.x | ^1.4 |
| 11.x | ^1.4 |
Install the package via composer:
composer require label84/laravel-hours-helper
use Label84\HoursHelper\Facades\HoursHelper;
$hours = HoursHelper::create('08:00', '09:30', 30);
// Illuminate\Support\Collection
0 => '08:00',
1 => '08:30',
2 => '09:00',
3 => '09:30',
use Label84\HoursHelper\Facades\HoursHelper;
$hours = HoursHelper::create('11:00', '13:00', 60, 'g:i A');
// Illuminate\Support\Collection
0 => '11:00 AM',
1 => '12:00 PM',
2 => '1:00 PM',
use Label84\HoursHelper\Facades\HoursHelper;
$hours = HoursHelper::create('08:00', '11:00', 60, 'H:i', [
['09:00', '09:59'],
// more..
]);
// Illuminate\Support\Collection
0 => '08:00',
1 => '10:00',
2 => '11:00',
use Label84\HoursHelper\Facades\HoursHelper;
$hours = HoursHelper::create('23:00', '01:00', 60);
// Illuminate\Support\Collection
0 => '23:00',
1 => '00:00',
2 => '01:00',
use Label84\HoursHelper\Facades\HoursHelper;
$hours = HoursHelper::create('2022-01-01 08:00', '2022-01-01 08:30', 15, 'Y-m-d H:i');
// Illuminate\Support\Collection
0 => '2022-01-01 08:00',
1 => '2022-01-01 08:15',
2 => '2022-01-01 08:30',
You can find more examples in the test directory: tests/HoursHelperTest.php
./vendor/bin/pint
./vendor/bin/phpstan analyze
./vendor/bin/phpunit
How can I help you explore Laravel packages today?