h4kuna / workdays
v0.3.0
2023-09-30 21:33 UTC
Requires
- php: >= 8.0
- h4kuna/data-type: ^3.0.5
Requires (Dev)
- nette/tester: ^2.4
- phpstan/phpstan: ^1.8
- phpstan/phpstan-deprecation-rules: ^1.1.3
- phpstan/phpstan-strict-rules: ^1.4
- tracy/tracy: ^2.9
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-25 11:05:50 UTC
README
Part of the h4kuna PHP libraries, see the overview of all packages.
Public holidays and workdays for the Czech Republic and Slovakia.
Installation
Requires PHP 8.4 or newer.
composer require h4kuna/workdays
Usage
use h4kuna\Workdays; $builder = Workdays\Factory::create(); $workdays = $builder->get('cs_CZ'); $datetime = new DateTime('2016-01-04 12:46:28'); echo ($workdays->isHoliday($datetime) ? 'true' : 'false') . PHP_EOL; // false echo ($workdays->isWorkday($datetime) ? 'true' : 'false') . PHP_EOL; // true $nextHoliday = $workdays->nextHoliday($datetime); echo $nextHoliday->name . PHP_EOL; // Velký pátek echo $nextHoliday->date->format('Y-m-d H:i:s') . PHP_EOL; // 2016-03-25 00:00:00 echo $workdays->nextWorkday($datetime)->format('Y-m-d H:i:s') . PHP_EOL; // 2016-01-05 12:46:28 // returns a new object, $datetime is not modified $moved = $workdays->moveWorkdays($datetime, 7); echo $moved->format('Y-m-d H:i:s') . PHP_EOL; // 2016-01-13 12:46:28 $workdays = $builder->get('sk_SK'); $datetime = new DateTime('2016-01-04 12:43:28'); echo ($workdays->isHoliday($datetime) ? 'true' : 'false') . PHP_EOL; // false echo ($workdays->isWorkday($datetime) ? 'true' : 'false') . PHP_EOL; // true $nextHoliday = $workdays->nextHoliday($datetime); echo $nextHoliday->name . PHP_EOL; // Zjavenie Pána echo $nextHoliday->date->format('Y-m-d H:i:s') . PHP_EOL; // 2016-01-06 00:00:00 echo $workdays->nextWorkday($datetime)->format('Y-m-d H:i:s') . PHP_EOL; // 2016-01-05 12:43:28 $moved = $workdays->moveWorkdays($datetime, 7); echo $moved->format('Y-m-d H:i:s') . PHP_EOL; // 2016-01-14 12:43:28
Custom holiday providers
Extend BaseProvider and return the holidays of the given year. The list must not be empty and all dates must be in the requested year.
use h4kuna\Workdays; use h4kuna\Workdays\HolidaysProvider\BaseProvider; use h4kuna\Workdays\HolidaysProvider\Holiday; class CustomHolidaysProvider extends BaseProvider { protected function holidaysInYear(int $year): array { return [ new Holiday(new DateTimeImmutable($year . '-01-01'), 'New Year\'s Day'), // ... ]; } } $builder = Workdays\Factory::create(); $builder->addProvider('myProvider', new CustomHolidaysProvider()); // get Workdays with your provider by the name used in addProvider() $workdays = $builder->get('myProvider');