label84 / laravel-hours-helper
Creates a Collection of times with a given interval.
Installs: 58 445
Dependents: 0
Suggesters: 0
Security: 0
Stars: 270
Watchers: 3
Forks: 23
Open Issues: 0
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.14
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.5
README
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.
Laravel Support
Installation
Install the package via composer:
composer require label84/laravel-hours-helper
Usage
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',
Example 1: time format
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',
Example 2: exclude times
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',
Example 3: past midnight
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',
Example 4: multiple days
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
Tests
./vendor/bin/phpstan analyze ./vendor/bin/phpunit