label84/laravel-hours-helper
Generate Laravel Collections of time/date intervals between start and end with a given step. Customize output formatting, handle ranges crossing midnight or spanning days, and exclude specific intervals—ideal for meeting schedulers, calendars, and dropdown time selectors.
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?