label84/laravel-hours-helper
Generate an Illuminate\Support\Collection of dates and times at a set interval for a given period—ideal for calendar dropdowns, meeting invites, and event scheduling. Supports custom formatting, excluded intervals, past-midnight ranges, and multi-day spans.
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?